Moq:如何检索依​​赖于其他属性的属性/方法

时间:2012-05-31 13:41:15

标签: moq

我对模拟环境非常陌生,最近使用Moq进行了一些单元测试,并坚持执行测试。

接口:

public interface IWebServiceWrapper
{
   string _org { get; set; }
   WebService GetWebService();
}

具体类

public class WebServiceWrapperImpl : IWebServiceWrapper
{
  public string _org {get; set;}
  public WebService GetWebService()
  {
     WebService new_webservice = new WebService();
     new_webservice.org= _org; 
     return new_webservice;
  }
}

使用Moq进行单元测试

[TestMethod]
public void CheckAccount()
{
      Mock<IWebServiceWrapper> mockSrvWrapper = new Mock<IWebServiceWrapper>();
      mockSrvWrapper.Setup(m => m._org).Returns("Some org");
      WebService new_webservice = mockSrvWrapper.Object.GetWebService();
      ............
      ............
 }

这里new_webservice填充了空值,因为org为null。即使我通过moq设置属性,也不确定为什么org为null。有人可以告诉我一些我做错了什么。顺便说一下,WebService认为它好像可以是任何webservice

1 个答案:

答案 0 :(得分:1)

这可以满足您的需求吗?

Mock<IWebServiceWrapper> mockSrvWrapper = new Mock<IWebServiceWrapper>();
mockSrvWrapper.SetupProperty(m => m._org, "Some org");
mockSrvWrapper.Setup(m => m.GetWebService()).Returns(
        () => new WebService { org = mockSrvWrapper.Object._org });
WebService new_webservice = mockSrvWrapper.Object.GetWebService();