单元测试-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"]
调用具有一个值。
有没有什么方法可以配置,在调用方法时参考实际值?
在运行时返回值而不是记录时间的方法是使用WhenCalled
或Do
方法。
在您的情况下,Do
似乎是正确的解决方案:(如果您想知道何时使用Do
或WhenCalled
,请阅读我的答案(
_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"]
中的值将返回。