如何通过Moq程序集模拟类型的属性



我正在尝试模拟一个名为EnvironmentManager的类,该类包含一个称为WebService_UserName的属性,而该属性在一个名称为CallMeAsync的函数中使用该属性。我该如何嘲笑这个私有属性来编写单元测试?

通常,如果将依赖项传递到构造函数中,则更容易测试对象。创建一个构造函数来传递您的私有变量的值。

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().Result;
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().Result;
Assert.Equal("expected result", actual)

msg到删除队列,我只是想帮助用户,而不是保存问题

最新更新