C# 如何验证字典参数?
我正在使用Moq框架 给出了以下代码:C# 如何验证字典参数?,c#,unit-testing,dictionary,moq,verify,C#,Unit Testing,Dictionary,Moq,Verify,我正在使用Moq框架 给出了以下代码: public interface ISomeInterface { SomeResult DoWork( ISomeContainer foo, Dictionary<string, object> bar ); } [ Test ] public void SomeTest() { Mock<ISomeInterface> mock = new Mock<ISomeInterface>();
public interface ISomeInterface
{
SomeResult DoWork( ISomeContainer foo, Dictionary<string, object> bar );
}
[ Test ]
public void SomeTest()
{
Mock<ISomeInterface> mock = new Mock<ISomeInterface>();
mock.Setup( m => m.DoWork( It.IsAny<ISomeContainer>(), It.IsAny<Dictionary<string, object>>() ) );
new Cut( mock ).DoSomething();
mock.Verify( m => m.DoWork( It.Is<ISomeContainer>( c => c.SomeValue == "foo" ), It.Is<Dictionary<string, object>>( d => ??? ) ) );
}
公共接口
{
SomeResult DoWork(ISomeContainer foo、字典栏);
}
[测试]
公共测试()
{
Mock Mock=新Mock();
mock.Setup(m=>m.DoWork(It.IsAny(),It.IsAny());
新切口(模拟)。DoSomething();
mock.Verify(m=>m.DoWork(It.Is(c=>c.SomeValue==“foo”)、It.Is(d=>?);
}
我知道如何验证接口参数(ISomeContainer
)的属性,但如何使用字典实现这一点
我想验证一下,调用
DoWork
方法时是否使用了一个简单的字典,该字典只包含一个键值对KeyA
+ValueA
预测一个委托,其中参数是当前值,返回类型是bool
因此,在您的情况下:Func
为了测试您的假设,您可以创建以下帮助器方法:
私有静态bool资产栏(字典栏)
{
单个(条形);
Assert.Equal(“KeyA”,bar.Keys.Single());
Assert.Equal(“ValueA”,bar.Values.Single());
返回true;
}
然后您可以像这样调用验证:
mock.Verify(
m=>m.DoWork(
It.Is(c=>AssertFoo(c)),
它是(d=>AssertBar(d)),
次,一次),;