如何为方法的内联逻辑设置最小起订量

拉梅什·拉金德兰

要测试的 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章