#region License
// Copyright (c) 2004 Griffin Caprio & Choy Rim. All rights reserved.
#endregion
#region Imports
using System;
using System.Reflection;
using DotNetMock.Dynamic;
using NUnit.Framework;
#endregion
namespace DotNetMock.Tests.Dynamic{
[TestFixture]
public class DynamicMockTests : AbstractDynamicMockTests
{
protected override IDynamicMock newDynamicMock(Type type, string name)
{
return new DynamicMock(type, name);
}
protected override IDynamicMock newDynamicMock(Type type)
{
return new DynamicMock(type);
}
protected override IDynamicMock newDynamicMock(string name)
{
return new DynamicMock(name);
}
[Test]
public void CallMultipleMethodsInWrongOrder()
{
IDynamicMock mock2 = newDynamicMock(typeof(IBlah));
mock2.Expect("myMethod1");
mock2.Expect("myMethod2");
mock2.Expect("myMethod3");
mock2.Call(myMethod1);
mock2.Call(myMethod3);
mock2.Call(myMethod2);
mock2.Verify();
}
[Test]
[ExpectedException(typeof(AssertionException), "1 more call(s) were expected for myMethod")]
public void NoCallToVoidMethodWithReason()
{
IDynamicMock mock2 = newDynamicMock(typeof(IBlah));
mock2.Expect("myMethod");
mock2.Verify();
}
[Test]
[ExpectedException(typeof(VerifyException))]
public void ThrowsIfUnexpectedMethodCalled()
{
IDynamicMock mock2 = newDynamicMock(typeof(IBlah));
IBlah blah = (IBlah) mock2.Object;
mock2.Strict = true;
mock2.ExpectAndReturn("DoStuff", "world", "hello");
Assert.AreEqual("world", blah.DoStuff("hello"));
blah.DoStuffWithParams("ID", "P1", "P2");
mock2.Verify();
}
[Test]
public void CustomDynamicMock()
{
IDynamicMock mock2 = new CustomMock(typeof(IBlah));
IBlah blah = (IBlah)mock2.Object;
Assert.AreEqual("CUSTOM", blah.DoStuff("hello"));
mock2.Verify();
}
private class CustomMock : DynamicMock
{
public CustomMock(Type t) : base(t) {}
public override object Call(MethodInfo mi, params object[] args)
{
return "CUSTOM";
}
}
}
}
|