我正在寻找一种方法来捕获传递给方法的实际参数,以便稍后检查它.想法是获取传递的参数,然后对它执行断言.
例如:
var foo = Mock<Foo>();
var service = Mock<IService>();
service.Expect(s => s.Create(foo));
service.Create(new Foo { Currency = "USD" });
Assert(foo.Object.Currency == "USD");
Run Code Online (Sandbox Code Playgroud)
或者更复杂的例子:
Foo foo = new Foo { Title = "...", Description = "..." };
var bar = Mock.NewHook<Bar>();
var service = new Mock<IService>();
service.Expect(s => s.Create(bar));
new Controller(service.Object).Create(foo);
Assert(foo.Title == bar.Object.Title);
Assert(foo.Description == bar.Object.Description);
Run Code Online (Sandbox Code Playgroud)
Bla*_*son 13
我想你正在寻找与Moq的回调相当的东西:
var foo = Mock<Foo>();
var service = Mock<IService>();
service.Setup(s => s.Create(foo.Object)).Callback((T foo) => Assert.AreEqual("USD", foo.Currency))
service.Object.Create(new Foo { Currency = "USD" });
Run Code Online (Sandbox Code Playgroud)