gpt4 book ai didi

c# - 如何验证字典参数?

转载 作者:行者123 更新时间:2023-12-05 02:00:50 25 4
gpt4 key购买 nike

我正在使用 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 => ??? ) ) );
}

我知道如何验证接口(interface)参数 (ISomeContainer) 的属性,但是使用字典这怎么可能呢?

我想验证 DoWork 方法是用一个仅包含一个键值对 KeyA + ValueA 的简单字典调用的>.

最佳答案

It.Is预期一个委托(delegate),其中参数是当前值和返回类型 bool。

因此,在您的情况下:Func<Dictionary<string, object>, bool>

为了测试您的假设,您可以创建以下辅助方法:

private static bool AssertBar(Dictionary<string, object> bar)
{
Assert.Single(bar);
Assert.Equal("KeyA", bar.Keys.Single());
Assert.Equal("ValueA", bar.Values.Single());

return true;
}

然后您可以调用Verify像这样:

mock.Verify(
m => m.DoWork(
It.Is<ISomeContainer>(c => AssertFoo(c)),
It.Is<Dictionary<string, object>>(d => AssertBar(d))),
Times.Once);

关于c# - 如何验证字典参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67015923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com