Если вы правильно поняли, что хотите проверить, что интерфейс вызывается хотя бы один раз на любом из трех указанных методов. Просматривая the quick reference Я не думаю, что вы можете сделать это в 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# материал для около года)
Мне интересно знать, почему вы Но все же это делается.
Я считаю, что Мендельт ссылается на метод Do. – 2008-09-30 19:59:42
Спасибо за полезный комментарий к моему слишком короткому ответу. Добавил его к вопросу. – Mendelt 2008-09-30 20:19:54