【发布时间】:2014-11-24 22:28:56
【问题描述】:
我正在尝试对一个方法进行单元测试并在其中模拟方法调用:
class LoginViewModel
{
public bool LogUserIn(string hashedPassword)
{
//Code
if (loginSuccessful)
{
GoToMainMenu(); // I WANT TO MOCK THIS CALL.
return true;
}
return false;
}
}
所以我想模拟 GoToMainMenu() 函数调用,因为这仅用于导航,当我尝试运行我的测试时会在这里抛出异常。
我尝试过使用 NUnit.Mocks:
[Test]
public void Log_User_In_Will_Return_True()
{
DynamicMock mockView = new DynamicMock(typeof(LoginViewModel));
mockView.ExpectAndReturn("GoToMainMenu", null);
LoginViewModel loginVM = (LoginViewModel)mockView.MockInstance; //ArgumentException
Assert.AreEqual(true, loginVM.LogUserIn("aHashedPassword"));
}
但这给了我一个 ArgumentException。
我花了很多时间尝试不同的方法来完成这项工作,还尝试了 Rhino Mocks,但无法弄清楚如何模拟这个调用。有人能帮忙吗?我没有尝试过 Moq,但怀疑它类似于 Rhino Mocks。
【问题讨论】:
-
首先我会开始看看如何使用模拟,有很多 SO 可以帮助你,例如stackoverflow.com/questions/7394013/…。您通常模拟从一个类到另一个类的交互,而不是类内的交互。
标签: c# unit-testing mocking nunit rhino-mocks