【发布时间】:2019-01-11 07:24:04
【问题描述】:
我正在使用 Moq 编写单元测试用例。
代码:
public class SavingAccount
{
public void Data()
{
//Some logic
}
}
public class Account
{
public void GetAccountDetails()
{
SavingAccount savingAccount = new SavingAccount();
savingAccount.Data();
//Some logic
}
}
测试用例:
[TestClass]
public class AccountTest
{
[TestMethod]
public void TestGetAccountDetails()
{
using(var mock = new AutoMock.GetLoose())
{
var mockAccount = mock.Create<Account>();
mockAccount.GetAccountDetails();
}
}
}
这里我需要模拟SavingAccount类的savingAccount.Data();方法。
但是当我运行上述测试时,savingAccount 对象实际上调用了Data() 方法。我不想叫它,只想嘲笑它。
我也不会更改上面的代码。我不想使用界面。
【问题讨论】:
-
你在使用依赖注入吗?您可以更改原始文件以使用注入的工厂方法。
-
没有约翰。我没有使用 DI。
-
你必须去寻找一个可以模拟类初始化的模拟框架。然而,起订量没有这个功能,而且我知道没有免费的框架可以。
-
当前显示的代码与实现问题紧密耦合,这使得单独测试主题代码变得困难。这应该被视为代码异味并相应地进行重构。
标签: c# moq rhino-mocks testcase