如果我理解正确,您想检查接口是否在三个指定方法中的任何一个上至少调用一次。通过快速参考,我认为你不能在 Rhino Mocks 中做到这一点。
直觉上,我认为您正在尝试编写易碎的测试,这是一件坏事。这意味着被测类的规范不完整。我敦促您仔细考虑设计,以便被测类和测试可以具有已知的行为。
但是,为了对示例有用,您始终可以这样做(但不要这样做)。
[TestFixture]
public class MyTest {
// The mocked interface
public class MockedInterface implements MyInterface {
int counter = 0;
public method1() { counter++; }
public method2() { counter++; }
public method3() { counter++; }
}
// The actual test, I assume you have the ClassUnderTest
// inject the interface through the constructor and
// the methodToTest calls either of the three methods on
// the interface.
[TestMethod]
public void testCallingAnyOfTheThreeMethods() {
MockedInterface mockery = new MockedInterface();
ClassUnderTest classToTest = new ClassUnderTest(mockery);
classToTest.methodToTest();
Assert.That(mockery.counter, Is.GreaterThan(1));
}
}
(有人检查我的代码,我现在已经从脑海中编写了这个,并且已经有大约一年没有写过 C# 的东西了)
我很想知道你为什么这样做。