要测试的 BAL 代码。
public List<string> GetColorGroupCodes()
{
var colorGrpCodes = (IEnumerable<POCO.ColourGroup>)colorsRepository.GetColorGroups().Result;
var colGrpCodes = (from col in colorGrpCodes select col.GroupCode + "-" + col.Description).ToList();
return colGrpCodes;
}
我可以为colorsRepository.GetColorGroups()
. 但是在起订量服务调用后,我无法为下一行设置起订量。请参阅以下方法中的评论以更多地了解我的问题。
[Fact]
public void GetColorGroupCodes()
{
var mockColorsRepository = CommonRepository.CreateInstanceOfIMock<IColorsRepository>();
var objectsList = Data();// it given the mocked response data as List
mockColorsRepository.Setup(rep => rep.GetColorGroups()).Returns(Task.FromResult<IEnumerable<Web.POCO.ColourGroup>>(objectsList));
// Now i can mockup the rep.GetColorGroups() and can retrun which is nead for the next logic **`(from col in colorGrpCodes select col.GroupCode + "-" + col.Description).ToList();`** in BAL
// But i don't know how to mock the logic **`(from col in colorGrpCodes select col.GroupCode + "-" + col.Description).ToList();`** via moq and return data as **`List<string>`** data type.
ColorsValidator colorsValidator = new ColorsValidator(mockColorsRepository.Object);
CoCApiResponse response = colorsValidator.GetColorsList();
Assert.Equal(response.Result, objectsList);
}
我只需要模拟它,并将返回逻辑返回的内容。是否可以?或者请提出其他想法,如果我有任何错误理解。
您在这里唯一可以测试的是,在给定一组已知数据的情况下,LINQ 返回预期结果 - 您已经通过模拟注入了一组已知数据,因此 LINQ 应该只处理您的模拟数据。你的断言会失败,因为你正在比较IEnumerable<ColourGroup>
一个List<string>
......我想?
您应该做的是检查返回的字符串是否符合您的预期,更像是:
/*Substitute this for however you get test data)
var data = new List<ColourGroup>();
data.Add(new ColourGroup(){GroupCode = "1", Description = "Black"});
data.Add(new ColourGroup(){GroupCode = "2", Description = "Green"});
...
...
CoCApiResponse response = colorsValidator.GetColorsList();
Assert.AreEqual(reponse.Count(), 2);
Assert.AreEqual(response.First(),"1-Black");
Assert.AreEqual(response.Skip(1).First(),"2-Green");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句