Alt*_*Ego 2 c# mocking return-value nmock
我有一个像这样的方法:
public string MyMethod(string a, string b)
{
if(a == "abcd" && b == "xyz")
return "good";
if(a == "xyz" && b == "something")
return "even better";
return "unexpected";
}
public string MainMethod()
{
string s1, s2;
if(some condition)
{
s1= "abcd";
s2 = "xyz";
}
return service.MyMethod(s1, s2);
}
Run Code Online (Sandbox Code Playgroud)
我的模拟对象是这样创建的
AppObj obj = new AppObj();
Mockery mocks = new Mockery();
mockMyService = mocks.NewMock<IMyService>();
Expect.Once.On(mockMyService ).Method("MyMethod").
With("abcd", "xyz").
Will(Return.Value("good"));
obj.MainMethod();
Expect.Once.On(mockMyService ).Method("MyMethod").
With("xyz", "something").
Will(Return.Value("even better"));
obj.MainMethod();
Run Code Online (Sandbox Code Playgroud)
上面代码的问题是,它总是需要第一个模拟方法的参数并返回"good".我需要做些什么才能使NMock为具有不同参数值的相同方法返回不同的值?请帮忙!!
得到它了!!
需要使用mock.Ordered.
所有模拟方法都以无序方式调用.要订购,必须使用:
Using(mock.Ordered)
{
MyMethod1(arg1, arg2);
MyMethod2(arg2, arg1);
}
Run Code Online (Sandbox Code Playgroud)
而已!!:)