2010-12-08 21 views
2

我有一個方法是這樣的: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); 

    } 

我的模擬對象是這樣

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(); 

與上面的代碼的問題創建的,它總是使用第一個模擬方法的參數和返回「好」。我需要做些什麼才能讓NMock爲具有不同參數值的相同方法返回不同的值?請幫忙!!

回答

6

明白了!

需要使用mock.Ordered。

所有模擬方法被調用以無序的方式。爲了使它有序,得到使用:

Using(mock.Ordered) 
{ 
    MyMethod1(arg1, arg2); 
    MyMethod2(arg2, arg1); 
} 

這就是它! :)

相關問題