I am getting this error when I try to set a mock to have PropertyBehavior()
:
System.InvalidOperationException: 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)..
I am trying to use only Rhino Mocks 3.5 (Arrange, Act, Assert)
Here is my code:
private IAddAddressForm form;
private AddAddressMediator mediator;
[TestInitialize()]
public void MyTestInitialize()
{
form = MockRepository.GenerateMock<IAddAddressForm>();
mediator = new AddAddressMediator(form);
// Make the properties work like a normal property
Expect.Call(form.OKButtonEnabled).PropertyBehavior();
//I tried this too. I still get the exception
//SetupResult.For(form.OKButtonEnabled).PropertyBehavior();
}
[TestMethod]
public void TestOKButtonEnabled()
{
form.OKButtonEnabled = true;
Assert.IsTrue(form.OKButtonEnabled);
}
I know I could use a stub (and for the code above I should) but I am trying to learn Rhino Mocks.
Eventually I want to be able to make sure that several properties has their values accessed. (Any hints on how to check that form.FirstName
was accessed (i.e. the getter was called) would also be appreciated.)
In case it is needed, here is the code to IAddressForm
:
namespace AddressBook
{
public interface IAddAddressForm
{
string FirstName { get; set; }
string LastName { get; set; }
string Address1 { get; set; }
string State { get; set; }
string Address2 { get; set; }
string ZipCode { get; set; }
string City { get; set; }
bool OKButtonEnabled { get; set; }
}
}
Anyway, I thought that virtual would not be a problem as I am passing in an interface, but I am clearly missing something.
Never used PropertyBehavior
before, but is this the syntax you're looking for?
form.Stub(x=>x.OKButtonEnabled).PropertyBehavior()
Rhino Mocks works completely through extension methods now. The only static call I every make any more is to MockRepository.GenerateStub
.