最小起订量单元测试方法 where Collection = serivce.GetCollection()?

Unit Testing Method with Moq where Collection = serivce.GetCollection()?

单元测试和最小起订量的新手。我有一个 WPF 客户端应用程序,它通过 HttpBinding 连接到 WCF 服务。我在 MSTest 中进行了测试 class,我正在使用 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 listArticlesTitleListList<string>:

   public void LoadArticleTitlesList()
    {
        ArticleTitlesList = new List<string>(IsesService.GetArticleTitles());
    }

显然这个测试失败了。我在 'collection' 上得到一个空异常。我如何为我的测试模拟这个字符串列表,或者我不应该用 WCF 服务方法调用编写 void 方法存根,其中 return 列表首先嵌套在它们里面?谢谢

设置后您需要return数据:

var listOfStrings = new List<string>{{"test1"}};
channelMock.Setup(c => c.GetArticleTitles()).Returns(listOfStrings);

必须传入一个字符串数组而不是 List<string>,因为 WCF 看起来像一个 returns 一个 .ToList() 作为返回一个 []string 的方法在样板代码中。因此传入一个字符串列表会产生一个重载方法无效参数异常。结束于此:

 var ArticleTitlesList = new string[] { "LoadArticleTitlesListTestValid" };
 channelMock.Setup(c => c.GetArticleTitles()).Returns(ArticleTitlesList);