как я могу издеваться над свойством типа с помощью сборки Moq?

#c# #moq

#c# #moq

Вопрос:

Я пытаюсь издеваться над классом, называемым EnvironmentManager, который содержит свойство с именем WebService_UserName, которое это свойство использует в функции CallMeAsync . Как я могу издеваться над этим частным свойством для написания модульного теста?

Комментарии:

1. Почему вы пытаетесь издеваться над частным свойством класса? В идеале этого не должно быть, поэтому оно объявлено как частное.

Ответ №1:

Как правило, если вы передаете зависимости в свой конструктор, протестировать объект проще. Создайте конструктор для передачи значения вашей частной переменной.

 public EnvironmentManager()  //what you currently have?
{
    _webService_UserName = new WebService_UserName();
}

public EnvironmentManager(object webService_UserName)  //passing dependency in instead
{
    _webService_UserName = webService_UserName;
}
 

Я подозреваю, что в этом примере WebService_UserName на самом деле является строкой, поэтому издевательство вообще не требуется.

 var underTest = new EnvironmentManager("WebService_UserName example");
var actual = underTest.CallMeAsync().Resu<
Assert.Equal("expected result", actual)
 

Если я ошибаюсь, и вам действительно нужно издеваться над зависимостью

 var mockedDependency = new Mock<WebService_UserName>(); 
/*set up for mockedDependency */
var underTest = new EnvironmentManager(mockedDependency.Object);
var actual = underTest.CallMeAsync().Resu<
Assert.Equal("expected result", actual)
 

сообщение в очередь удаления, я просто пытаюсь помочь пользователю, а не сохранить вопрос