37

I am using RhinoMocks. Now I want to assert that some function was called, but I only care about one of the arguments. Can I do a AssertWasCalled where I only specify one argument?

In the following example I'd like the ignore what was sent to the second argument of SomeOtherFunction(). I.e. I want to check that SomeOtherFunction was called with first parameter 123 and I don't care what the second parameter was.

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

    myMock.AssertWasCalled(factory => factory.SomeOtherFunction(123, null));  
}
stiank81
  • 25,418
  • 43
  • 131
  • 202

1 Answers1

74

You can specify the 2nd argument as Arg<T>.Is.Anything, then the actual value gets ignored.

However note that using this you need to use Arg for all arguments. Which means you need to use on the first argument: Arg<int>.Is.Equal(123).

Michal Sznajder
  • 9,338
  • 4
  • 44
  • 62
Matt Warren
  • 10,279
  • 7
  • 48
  • 63
  • Where do you use `Arg` exactly? like this? `factory.SomeOtherFunction(Arg.Is.Equal(123), Arg.Is.Anything)` – Ama Jun 12 '21 at 17:09