Частичное совпадение аргументов в носорогах
В моем unit test вместо IgnoreArguments я хочу использовать некоторое частичное сопоставление аргументов в тестировании нокаутов rhino.
Как это сделать?
Спасибо,
Джон
Ответы
Ответ 1
// arrange
var fooStub = MockRepository.GenerateStub<IFoo>();
// act
fooStub.Bar("arg1", "arg2", 3);
// assert
fooStub.AssertWasCalled(
x => x.Bar(
Arg<string>.Is.Equal("arg1"),
Arg<string>.Is.Anything,
Arg<int>.Is.Equal(3))
);
Ответ 2
Вы можете использовать constraints. Вы игнорируете аргументы, переданные в ожидающий вызов, а затем добавляете явные ограничения для каждого аргумента. Пример из документации Rhino Mocks:
Expect.Call(view.Ask(null,null)).IgnoreArguments().Constraints(
Is.Anything(),
Is.TypeOf(typeof(SomeType))).Return(null);