У меня есть тест, который выглядит следующим образом:Есть ли способ кэшировать определение Arg.Is <> для использования в частях «Arrange» и «Act» теста?
[Test]
public void Blah()
{
// Arrange
// ...
var thing = new Thing();
mockRouter.Route(Arg.Is<Transition<Thing>>(x => x != null && x.Subject != null && x.Subject.Equals(thing)));
// Act
var result = handler.Handle(thing);
// Assert
mockRouter.Received(1).Route(Arg.Is<Transition<Thing>>(x => x != null && x.Subject != null && x.Subject.Equals(thing)));
}
Я хотел бы кэшировать вверх Arg
определение в локальной переменной, так что я могу использовать его в утверждают. Дело в том, чтобы уменьшить количество кода в тесте и сделать его немного более плавным.
[Test]
public void Blah()
{
// Arrange
var thing = new Thing();
var transitionForThing = Arg.Is<Transition<Thing>>(x => x != null && x.Subject != null && x.Subject.Equals(thing));
mockRouter.Route(transitionForThing);
// ...
// Act
var result = handler.Handle(thing);
// Assert
mockRouter.Received(1).Route(transitionForThing);
}
Это не похоже на работу, так как значение transitionForThing
равно нулю, и поэтому утверждение не говоря, что Received(null)
не называли. Есть ли способ сделать это или что-то подобное, или я придерживаюсь этого синтаксиса?
Хорошая точка. Я преобразовал тест из Rhino Mocks и повторил некоторое плохое поведение. – Kit