2009-12-22 5 views
34

Я использую RhinoMocks. Теперь я хочу утверждать, что была вызвана какая-то функция, но мне нужен только один из аргументов. Могу ли я сделать AssertWasCalled, где я указываю только один аргумент?RhinoMocks - Не указывать все параметры в AssertWasCalled

В следующем примере я хотел бы проигнорировать то, что было отправлено во второй аргумент SomeOtherFunction(). То есть Я хочу проверить, что SomeOtherFunction был вызван с первым параметром 123, и мне все равно, какой был второй параметр.

[Test] 
public void SomeTest() 
{ 
    var myMock = MockRepository.GenerateMock<ISomeInterface>();  
    var myObj = new MyClass(myMock); 
    myObj.foo() 

    myMock.AssertWasCalled(factory => factory.SomeOtherFunction(123, null)); 
} 

ответ

61

Вы можете указать 2-й аргумент Arg<T>.Is.Anything, то фактическое значение игнорируется.

Однако обратите внимание, что используя это, вы должны использовать Арг для всех аргументов. Это означает, что вам нужно использовать по первому аргументу: Arg<int>.Is.Equal(123).