- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 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/
最后一次构建是在 2010 年 1 月 5 日。 我要学习一个模拟框架,我不想学习一个产品会消亡。 最佳答案 Rhino Mocks 没有更发达——但值得注意的是,它复活了大约一年 . Ayende
有没有办法设置RhinoMocks期望而不关心返回值?类似这样的事情: repository.Expect(r => r.Add(1)).Return(Anything) 最佳答案 请注意,如果您未指
我正在尝试为一段使用拼写校正器的代码设置单元测试。我已经正确地注入(inject)了代码依赖项,所以在 Rhinomocks 中设置 stub 不是问题,但是我为测试创建的文本 block 有 50
public interface IServiceInvoker { R InvokeService(Func invokeHandler) where T : class; } publi
尝试引发 Rhino Mock 事件时出现以下错误 Invalid call, the last call has been used or no call has been made (make s
我有一些与 Entity Framework 一起使用的代码,例如 class Person{ pubic Person() { Address = new Address(); }
我想做以下... 在调用某个方法之前,某个属性必须始终返回值 x调用方法后,某个属性必须始终返回值 y 我熟悉 RhinoMocks 中的 WhenCalled 方法,它允许我在调用方法后设置返回值,
有谁知道如何在抽象类上引发事件? 下面的测试在最后一行失败了。我得到的异常如下: System.InvalidOperationException : Invalid call, the last c
使用 RhinoMocks - 我可以获取被调用函数的参数吗?我是说;我可以从函数调用中获取一些未知参数吗? 我有一个模拟,我希望在这个模拟上调用一些函数。我知道其中一个参数,但另一个参数是未知的,因
我使用 RhinoMocks 毫无问题地使用 AssertWasCalled 检查我的方法是否使用简单的参数调用,例如 Arg.Is.Equal(1) 等。 但是,当我尝试期待自己创建的复杂对象时,它
据我了解,用RhinoMocks创建的mock对象在创建时直接进入录音状态,然后调用Replay()进入replay状态。我想手动决定模拟对象何时开始录制,或者能够暂停录制。这在 RhinoMocks
好像注释不能支持代码 假设我调用了一个方法(例如 SaveTicket)并使用了构造函数(例如 Repository、Logging)来注入(inject)各种模拟接口(interface)。如果该方
我正在尝试更加熟悉 Rhinomocks 框架,并且我正在尝试了解 rhinomocks 的 Expect 方法。 这是我写的单元测试: [TestMethod] public void Create
如何使用 RhinoMocks 模拟以下行为? 被测试的方法在接口(interface)上调用 ReceivePayment 方法。 public void TestedMethod(){ b
我有一个类,我想在我的测试中模拟它,这是它接口(interface)的一部分: interface IInventory { Instrument[] GetAllInstrumentsAff
我使用 RhinoMocks 进行了一个非常简单的测试(我不得不说我是初学者)。我试着像这样模拟我的对象 var mock = MockRepository.GenerateMock(); 创建一个助
我有这个方法: public void Handle(ShipmentConfirmedEvent message) { try {
我使用 RhinoMocks 进行模拟/ stub ,使用 Nunit 框架进行单元测试。 我有以下类(class) class A { private int dat
我们目前正在从 NMock2 迁移到 RhinoMocks,但我们在复制这段代码时遇到了问题: foreach (EventInfo e in typeof(MarketMapPopupIMVPVie
我正在使用 RhinoMocks 编写 NUnit 测试。其中一项测试如下所示: mock = MockRepository.CreateMock(); // Arrange // During th
我是一名优秀的程序员,十分优秀!