Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证字典参数?_C#_Unit Testing_Dictionary_Moq_Verify - Fatal编程技术网

C# 如何验证字典参数?

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>();

我正在使用Moq框架

给出了以下代码:

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)),
次,一次),;