- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有谁知道如何在抽象类上引发事件?
下面的测试在最后一行失败了。我得到的异常如下:
System.InvalidOperationException : Invalid call, the last call has been used or no call has been made (make sure that you are calling a virtual (C#) / Overridable (VB) method).
我能够在接口(interface)上引发事件,但不能在实现该接口(interface)的抽象类上引发事件。这是使用最新版本的 RhinoMocks (3.6.0.0)。
谢谢,亚历克斯
public abstract class SomeClass : SomeInterface
{
public event EventHandler SomeEvent;
}
public interface SomeInterface
{
event EventHandler SomeEvent;
}
[Test]
public void Test_raising_event()
{
var someClass = MockRepository.GenerateMock<SomeClass>();
var someInterface = MockRepository.GenerateMock<SomeInterface>();
someInterface.Raise(x => x.SomeEvent += null, someClass, EventArgs.Empty);
someClass.Raise(x => x.SomeEvent += null, someClass, EventArgs.Empty);
}
最佳答案
问题由异常消息解释:
System.InvalidOperationException : Invalid call, the last call has been used or no call has been made (make sure that you are calling a virtual (C#) / Overridable (VB) method).
您的事件不是虚拟的,即。 Rhino 将无法覆盖它。只需添加 virtual
抽象类事件定义的关键字。
位背景信息。当您调用 MocksRepository.GenerateMock<SomeClass>
Rhino 将创建动态代理 类,它将用于记录调用、准备 stub 等。这个类可能看起来 +/- 像这样:
public class SomeClassDynamicProxy1 : SomeClass
{
public override EventHandler SomeEvent
{
add { ... }
remove { ... }
}
...
}
没有virtual
在你的SomeClass
,这段代码自然会像现在这样失败。
关于c# - RhinoMocks - 在模拟抽象类上引发事件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795770/
最后一次构建是在 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
我是一名优秀的程序员,十分优秀!