我有一个看起来像这样的测试:
[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)
没有被调用。有没有办法做到这一点或类似的事情,还是我坚持这种语法?