AssertWasCalled в rhino mocks

Имам тестван обект, който прави доста сложно извикване на обект за достъп до данни. Прилича на нещо подобно

object.DoSomething(somestring,someObject,someOtherObject,someOtherOtherObject)

В моята тестова структура имам макетна версия на обект и искам да тествам дали Dosomething е извикан с somestring == "value1" и someObject.porpertyA == "value2".

Не мога да използвам простото претоварване AssertWasCalled(), защото не знам за (или не ме интересува) someOtherObject. Забелязвам друго претоварване, което предприема действие за ограничения за настройка, но никога не съм го виждал да се използва.


person captncraig    schedule 01.07.2009    source източник


Отговори (2)


Парче торта:

yourstub.AssertWasCalled(
             x => x.DoSomething(
                Arg<string>.Is.Equal("value1"), 
                Arg<someObjectType>.Is.Equal(value2), 
                Arg<someOtherObjectType>.Is.Anything,   <======== NOTE THIS!
                Arg<someOtherOtherObjectType>.Is.Equal(value3)
             )
);
person zvolkov    schedule 01.07.2009
comment
Това работи страхотно. Единственото друго нещо, което намерих за полезно, беше да използвам Arg‹someObjectType›.Matches(y =› y.property == whatever); за проверка на стойностите на аргументните обекти. - person captncraig; 01.07.2009

Разгледайте документацията за ограниченията.

Подозирам, че искате:

Expect.Call(object.DoSomething(null, null, null, null)
      .IgnoreArguments() // Ignore those nulls
      .Constraints(Is.Equal("value1"),
                   Property.Value("PropertyA", "value2"),
                   Is.Anything(),
                   Is.Anything())
      .Return(whateverItShouldReturn);
person Jon Skeet    schedule 01.07.2009