我正在尝试模拟一个名为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到删除队列,我只是想帮助用户,而不是保存问题