gpt4 book ai didi

c# - Moq:如何获取传递给模拟服务方法的参数

转载 作者:IT王子 更新时间:2023-10-29 03:31:56 26 4
gpt4 key购买 nike

想象一下这个类

public class Foo {

private Handler _h;

public Foo(Handler h)
{
_h = h;
}

public void Bar(int i)
{
_h.AsyncHandle(CalcOn(i));
}

private SomeResponse CalcOn(int i)
{
...;
}
}

在 Foo 测试中 Mo(q)cking Handler,我如何才能检查 Bar() 传递给 _h.AsyncHandle 的内容?

最佳答案

您可以使用 Mock.Callback 方法:

var mock = new Mock<Handler>();
SomeResponse result = null;
mock.Setup(h => h.AsyncHandle(It.IsAny<SomeResponse>()))
.Callback<SomeResponse>(r => result = r);

// do your test
new Foo(mock.Object).Bar(22);
Assert.NotNull(result);

如果你只想检查传入参数的一些简单的东西,你也可以直接这样做:

mock.Setup(h => h.AsyncHandle(It.Is<SomeResponse>(response => response != null)));

关于c# - Moq:如何获取传递给模拟服务方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269717/

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