bom*_*bek 3 c# unit-testing moq
我想使用匿名参数测试方法执行,但使用已知属性。
public interface IToTest
{
void MethodToTest(object data);
}
Run Code Online (Sandbox Code Playgroud)
这就是我尝试实现这一目标的方法:
Mocker.Mock<IToTest>
.Verify(x=>x.MethodToTest(
It.Is<object>(
obj=>obj.Equals(new { DataProperty = "Test"})
)),
Times.Once());
Run Code Online (Sandbox Code Playgroud)
测试未通过。
我不想使用
It.IsAny<object>()
Run Code Online (Sandbox Code Playgroud)
因为我知道预期数据。
您将需要在委托中使用反射来进行比较,或者使用类似的东西FluentAssertions来减轻繁重的工作
例如
//...
var expected = new {
DataProperty = "Test"
//...known properties
};
Func<object, bool> match = _ => {
_.Should().BeEquivalentTo(expected);
return true;
};
Mocker.Mock<IToTest>
.Verify(x =>
x.MethodToTest(It.Is<object>(obj => match(obj))),
Times.Once());
Run Code Online (Sandbox Code Playgroud)
或者,您可以在回调中捕获对象参数,然后使用流畅的断言来断言捕获的参数。
| 归档时间: |
|
| 查看次数: |
4298 次 |
| 最近记录: |