繁体   English   中英

Moq的单元测试方法,其中Collection = serivce.GetCollection()?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM