gpt4 book ai didi

c# - 在 RhinoMocks 中使用回调触发器

转载 作者:太空狗 更新时间:2023-10-29 20:02:14 24 4
gpt4 key购买 nike

我正在使用 RhinoMocks 编写单元测试以进行模拟,现在我需要一些以前从未使用过的新功能。

我想调用一个函数,它又会调用一个异步函数。为了模拟异步函数完成并使用执行结果触发给定的回调,我假设我可以使用 RhinoMocks 中的回调功能,但我该怎么做呢?

基本上我想做的是这样的:

fakeSomething = MockRepository.GenerateMock<ISomething>();
fakeSomething.FictionousFunctionSettingCallback(MyFunctionCalled, MyCallback, theParameterToGiveCallback);
var myObj = new MyClass(fakeSomething);
myObj.Foo();
// Foo() now fires the function MyFunctionCalled asynchronous,
// and eventually would trigger some callback

所以;是否有一个真正的函数可以替换这个“FictionousFunction”来设置它?不清楚的请问..

最佳答案

只需使用 WhenCalled 指定它:

fakeSomething = MockRepository.GenerateMock<ISomething>();
fakeSomething
.Stub(x => x.Foo())
.WhenCalled(call => /* do whatever you want */);

例如,您可以使用调用参数的 Arguments 属性:

fakeSomething
.Stub(x => x.Foo(Arg<int>.Is.Anything))
.WhenCalled(call =>
{
int myArg = (int)call.Arguments[0]; // first arg is an int
DoStuff(myArg);
});

它不是异步的。您很可能不需要它是异步的,如果不是,它无论如何都会让您的生活更轻松。

关于c# - 在 RhinoMocks 中使用回调触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1953154/

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