|
I can't figure out why I'm getting a cast exception on this line:
IRestServiceClient client = new RestServiceClient((IRestRequestBuilderFactory)restRequestBuilderFactory);
The mock is declared here:
private Mock<IRestRequestBuilderFactory> factory;
and created in the SetUp method:
factory = mockFactory.CreateMock<IRestRequestBuilderFactory>();
I must be missing something fundamental: if a mock can't be cast to the interface it's supposedly mocking, what kind of a mock is it?
I'm using NMock3 with Visual Studio 2008, so I can't run the tutorial. I can't find any other documentation online, including the legendary NMock3 cheat sheet.
Complete listing:
using System;
using System.Collections.Generic;
using System.Text;
using GPICore.Repository.WebService;
using NMock2;
using NUnit.Framework;
namespace NorthernTrust.GPI.Home.Test.UnitTest.Repository.WebService
{
public class NMockTempTest
{
private static readonly RestResourceType ResourceType = RestResourceType.SplashMessage;
private static readonly RestResourceMethod Method = RestResourceMethod.GET;
private MockFactory mockFactory;
private Mock<IRestRequest> request;
private Mock<IRestRequestBuilderFactory> factory;
private Mock<IRestRequestBuilder> builder;
[SetUp]
public void Setup()
{
mockFactory = new MockFactory();
request = mockFactory.CreateMock<IRestRequest>();
factory = mockFactory.CreateMock<IRestRequestBuilderFactory>();
Assert.NotNull(factory);
builder = mockFactory.CreateMock<IRestRequestBuilder>();
}
[Test]
public void TheServiceBuildsTheRequest()
{
factory.Expects.One.MethodWith(f => f.GetBuilder()).WillReturn(builder as IRestRequestBuilder);
builder.Expects.One.MethodWith(b => b.ResourceType(ResourceType))
.WillReturn(builder as IRestRequestBuilder);
builder.Expects.One.MethodWith(b => b.Method(Method))
.WillReturn(builder as IRestRequestBuilder);
builder.Expects.One.MethodWith(b => b.Build()).WillReturn(request as IRestRequest);
var restRequestBuilderFactory = factory;
Assert.NotNull(restRequestBuilderFactory);
IRestServiceClient client = new RestServiceClient((IRestRequestBuilderFactory)restRequestBuilderFactory);
client.Get(ResourceType, "");
mockFactory.VerifyAllExpectationsHaveBeenMet();
}
}
}
The error message:
TheServiceBuildsTheRequest : Failed
System.InvalidCastException : Unable to cast object of type 'NMock2.Mock`1[GPICore.Repository.WebService.IRestRequestBuilderFactory]' to type 'GPICore.Repository.WebService.IRestRequestBuilderFactory'.
at NorthernTrust.GPI.Home.Test.UnitTest.Repository.WebService.NMockTempTest. TheServiceBuildsTheRequest() in NMockTempTest.cs: line 44
|