В вашем примере вам не понадобятся RhinoMocks, потому что вы явно тестируете функциональность тестируемого класса. Вместо этого подойдет простое юнит-тестирование:
[Test]
public void SomeTest()
{
var sc = new SomeClass();
// Instantiate SomeClass as sc object
sc.SomeMethod();
// Call SomeMethod in the sc object.
Assert.That(sc.SomeProp, Is.True );
// Assert that the property is true...
// or change to Is.False if that's what you're after...
}
Гораздо интереснее тестировать макеты, когда у вас есть класс, который зависит от других классов. В вашем примере вы упоминаете:
// выполнить операцию с файлом, wcf, db здесь с _someArg
т.е. вы ожидаете, что какой-то другой класс установит свойство SomeClass
, что имеет больше смысла для mocktest. Пример:
public class MyClass {
ISomeClass _sc;
public MyClass(ISomeClass sc) {
_sc = sc;
}
public MyMethod() {
sc.SomeProp = true;
}
}
Требуемый тест будет выглядеть примерно так:
[Test]
public void MyMethod_ShouldSetSomeClassPropToTrue()
{
MockRepository mocks = new MockRepository();
ISomeClass someClass = mocks.StrictMock<ISomeClass>();
MyClass classUnderTest = new MyClass(someClass);
someClass.SomeProp = true;
LastCall.IgnoreArguments();
// Expect the property be set with true.
mocks.ReplayAll();
classUndertest.MyMethod();
// Run the method under test.
mocks.VerifyAll();
}