2012-05-31 3 views
0

Я очень новичок в создании среды и недавно провел некоторые модульные тесты с использованием 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. Не уверен, почему org является null, хотя я устанавливаю свойство через moq. Может кто-нибудь, пожалуйста, дайте мне понять, что я делаю неправильно. Кстати, WebService считает, что это может быть любой веб-сервис

ответ

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(); 
+0

Thanks Ian. он работает отлично. – user1428470

+0

Если это работает отлично, вы не должны соглашаться на его ответ и, возможно, также его повышать? – Gilles

+0

Извините, Ян. Я просто принимаю ответ. Upvote понадобится репутация, которой я в настоящее время недостаточно – user1428470

Смежные вопросы