[英]Unit Testing Method with Moq where Collection = serivce.GetCollection()?
单元测试和起订量的新手。 我有一个WPF客户端应用程序,它通过HttpBinding
挂接到WCF服务中。 我在MSTest中有一个测试类,并且正在用Moq模拟服务,如下所示:
[TestClass]
public class ArticleDataGridTests
{
//Mock channel for WCF service. Moq mocking framework.
Mock<IIsesServiceChannel> channelMock = new Mock<IIsesServiceChannel>();
[TestMethod]
public void LoadArticleTitlesListTestValid()
{
channelMock.Setup(c => c.GetArticleTitles());
ArticleDataGridViewModel articleDataGridViewModel = new ArticleDataGridViewModel(channelMock.Object);
articleDataGridViewModel.LoadArticleTitlesList();
channelMock.Verify(c => c.GetArticleTitles(), Times.Once());
}
}
}
这是在ViewModel中调用的方法LoadArticleTitles list
。 ArticlesTitleList
是一个List<string>
:
public void LoadArticleTitlesList()
{
ArticleTitlesList = new List<string>(IsesService.GetArticleTitles());
}
显然,此测试失败。 我在“集合”上得到了一个空异常。 如何为测试模拟此字符串列表,还是不应该使用WCF服务方法调用编写无效方法存根,而WCF服务方法调用首先返回嵌套在其中的列表? 谢谢
设置后,您需要返回数据:
var listOfStrings = new List<string>{{"test1"}};
channelMock.Setup(c => c.GetArticleTitles()).Returns(listOfStrings);
必须传入一个字符串数组而不是一个List<string>
因为WCF看起来像一个返回.ToList()
的方法,因为在样板代码中返回了[]string
。 因此,传递字符串列表会导致重载方法的无效参数异常。 最终这样:
var ArticleTitlesList = new string[] { "LoadArticleTitlesListTestValid" };
channelMock.Setup(c => c.GetArticleTitles()).Returns(ArticleTitlesList);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.