2016-09-21 12 views
1

Как я понимаю, упорядоченный утверждения в FakeItEasy 2 сделаны, как это (из документации):OrderedAssertions петля Howto в FakeItEasy 2

// Assert 
A.CallTo(() => unitOfWorkFactory.BeginWork()).MustHaveHappened() 
    .Then(A.CallTo(() => usefulCollaborator.JustDoIt()).MustHaveHappened()) 
    .Then(A.CallTo(() => unitOfWork.Dispose()).MustHaveHappened()); 

Теперь предположим, что у меня есть коллекция и для каждого элемента в этой коллекции я хочу утверждать, что был сделан вызов поддельному объекту. Каков наилучший подход к утверждению звонков был сделан в правильном порядке?

Я придумал это, но не очень нравится:

IOrderableCallAssertion ioca = null; 
    foreach (var item in items.OrderBy(i => i.Id) 
    { 
     var itemUnderTest = item; 
     if (ioca == null) 
     { 
      ioca = A.CallTo(() => fakeObject.Handle(itemUnderTest, otherArgument)).MustHaveHappened(Repeated.Exactly.Once); 
     } 
     else 
     { 
      ioca = ioca.Then(A.CallTo(() => fakeObject.Handle(itemUnderTest, otherArgument)).MustHaveHappened(Repeated.Exactly.Once)); 
     } 
    } 

ответ

0

Это выглядит правильно для меня. Конечно, вы можете встроить itemUnderTest и вытащить MustHaveHappened за пределами двух ветвей if.

И вы всегда можете скрыть это методом удобства.

Альтернатива: использование Вызывает для захвата подделок по мере поступления вызовов и последующего сравнения их со списком.