|
From: Vaughn, C. <Va...@va...> - 2003-08-04 17:02:17
|
Since I use a lot of mocks, sometimes it's tricky to figure out which one
gave an error. I'd like to have the mock name added to the error message
before the method name. Here's my version of MockTest with changes to the
test for e.Reason:
[Test]
public void ExpectedNoCallsMessage()
{
try
{
mock.ExpectNoCall("x");
mock.Call("x");
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() called",
e.Reason);
Assertion.AssertEquals(0, e.Expected);
Assertion.AssertEquals(1, e.Actual);
}
}
[Test]
public void ExpectedOneCallMessage()
{
try
{
mock.Expect("x");
mock.Verify();
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() never
called", e.Reason);
Assertion.AssertEquals(1, e.Expected);
Assertion.AssertEquals(0, e.Actual);
}
}
[Test]
public void ExpectedOneCallGotTooManyMessage()
{
try
{
mock.Expect("x");
mock.Call("x");
mock.Call("x");
mock.Verify();
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() called
too many times", e.Reason);
Assertion.AssertEquals(1, e.Expected);
Assertion.AssertEquals(2, e.Actual);
}
}
[Test]
public void ExpectedManyCallsGotNoneMessage()
{
try
{
mock.Expect("x");
mock.Expect("x");
mock.Verify();
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() never
called", e.Reason);
Assertion.AssertEquals(2, e.Expected);
Assertion.AssertEquals(0, e.Actual);
}
}
[Test]
public void ExpectedManyCallsGotOneMessage()
{
try
{
mock.Expect("x");
mock.Expect("x");
mock.Call("x");
mock.Verify();
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() not
called enough times", e.Reason);
Assertion.AssertEquals(2, e.Expected);
Assertion.AssertEquals(1, e.Actual);
}
}
[Test]
public void ExpectedManyCallsGotTooManyMessage()
{
try
{
mock.Expect("x");
mock.Expect("x");
mock.Call("x");
mock.Call("x");
mock.Call("x");
mock.Verify();
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() called
too many times", e.Reason);
Assertion.AssertEquals(2, e.Expected);
Assertion.AssertEquals(3, e.Actual);
}
}
[Test]
public void ExpectedManyCallsGotNotEnoughMessage()
{
try
{
mock.Expect("x");
mock.Expect("x");
mock.Expect("x");
mock.Call("x");
mock.Call("x");
mock.Verify();
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals(3, e.Expected);
Assertion.AssertEquals(2, e.Actual);
Assertion.AssertEquals("mymock.x() not
called enough times", e.Reason);
}
}
[Test]
public void IncorrectNumberOfParametersMessage()
{
try
{
mock.Expect("x", new object[] {1, 2, 3} );
mock.Call("x", new object[] {2, 3});
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() called
with incorrect number of parameters", e.Reason);
Assertion.AssertEquals(3, e.Expected);
Assertion.AssertEquals(2, e.Actual);
}
}
[Test]
public void IncorrectParameterConstraintMessage()
{
try
{
IMock Constraint = new
DynamicMock(typeof(IConstraint));
Constraint.SetupResult("Message", "wee
woo");
Constraint.SetupResult("Eval", false,
typeof(object));
mock.Expect("x", new IsAnything(),
(IConstraint)Constraint.MockInstance);
mock.Call("x", "hello", "world");
Assertion.Fail("Expected VerifyException");
}
catch (VerifyException e)
{
Assertion.AssertEquals("mymock.x() called
with incorrect parameter (2)", e.Reason);
Assertion.AssertEquals("wee woo",
e.Expected);
Assertion.AssertEquals("world", e.Actual);
}
}
I've made changes to my copy and it mainly involves just adding another parm
to MockCall and its derivatives.
Clifton F. Vaughn
This message may have included proprietary or protected information. This
message and the information contained herein are not to be further
communicated without my express written consent.
|