单元测试-C#模拟方法在实际执行时返回值

本文关键字:执行 返回值 -C# 模拟 方法 单元测试 | 更新日期: 2023-09-27 18:01:02

我使用Nunit测试和Rhino-Mocks测试代码单元
我的代码如下所示;

_mockHandler.Expect(m => m.DoSomething(Arg<string>.Is.Anything, Arg<string>.Is.Anything))
            .Return(myList["XXX"]);

myList的内容是从正在运行的线程更新的。一旦myList["XXX"]的上述行执行值为空。但在执行此方法时,从代码myList["XXX"]调用具有一个值。

有没有什么方法可以配置,在调用方法时参考实际值?

单元测试-C#模拟方法在实际执行时返回值

在运行时返回值而不是记录时间的方法是使用WhenCalledDo方法。

在您的情况下,Do似乎是正确的解决方案:(如果您想知道何时使用DoWhenCalled,请阅读我的答案(

_mockHandler.Expect(m => m.DoSomething(Arg<string>.Is.Anything, 
                                       Arg<string>.Is.Anything))
            .Do(new Func<string,string,string>((s, s1) => myList["XXX"]));

在上面的示例中,当您调用DoSomething时,(s, s1) => myList["XXX"])将执行,并且myList["XXX"]中的值将返回。