What error do you get, when I copy/paste the code above I get (is this what you're seeing):
Test 'Rhino.Mocks.Tests.FieldsProblem.Tester.Test' failed: System.ServiceModel.AddressAccessDeniedException : HTTP could not register URL http://+:9090/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details). ----> System.Net.HttpListenerException : Access is denied TearDown : System.ServiceModel.CommunicationObjectFaultedException : The communication object, System.ServiceModel.ServiceHost, cannot be used for communication because it is in the Faulted state. at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener) at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback) at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.HttpChannelListener.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open() FieldsProblem\FieldProblem_ Edward.cs(85,0): at Rhino.Mocks.Tests.FieldsProblem.Tester.Setup() --HttpListenerException at System.Net.HttpListener.AddAll() at System.Net.HttpListener.Start() at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() --TearDown at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Close() FieldsProblem\FieldProblem_ Edward.cs(91,0): at Rhino.Mocks.Tests.FieldsProblem.Tester.TearDown() On Tue, Sep 7, 2010 at 5:16 AM, Edward <[email protected]> wrote: > Hi, i have the following problem: i want to test an abstract class > that contains a method that calls a wcf service. I mock the wcf > service and use a partial mock to mock the abstract class. The problem > is that the wcf service throws a timeout exception when i set an > expectation to the abstract class.The example below replicates the > issue. > > using System; > using System.Collections.Generic; > using System.Linq; > using System.Text; > using NUnit.Framework; > using Rhino.Mocks; > using System.ServiceModel; > using Rhino.Mocks.Interfaces; > using System.ServiceModel.Channels; > > namespace TestLib > { > > > //------------------------------------------------------------------------------- > > [ServiceContract] > public interface ICalculatorService > { > [OperationContract] > [FaultContract(typeof(ArgumentNullException))] > double Multiply(double x, double y); > } > > public abstract class AbstractShape > { > protected internal abstract double CalculateArea(); > > public double GetArea() > { > //Do some other stuff... > return CalculateArea(); > } > } > > public abstract class Circle : AbstractShape > { > //This method should be abstract, i made it virtual just to > see > //that when not setting an expectation the test will pass. > protected internal virtual double GetRadius() > { > return 15; > } > > protected internal override double CalculateArea() > { > ICalculatorService client = > ChannelFactory<ICalculatorService> > .CreateChannel(new BasicHttpBinding(), new > EndpointAddress("http://localhost:9090")); > > double radius = GetRadius(); > double result = client.Multiply(radius, radius); > > result = client.Multiply(Math.PI, result); > > ((IChannel)client).Close(); > > return result; > } > } > > > > //----------------------------------------------------------------------------------------------------- > > [TestFixture] > public class Tester > { > private MockRepository _mocks; > private ICalculatorService _calculatorServiceMock; > private ServiceHost _calculatorServiceHost; > private Circle _circleMock; > > [SetUp] > public void Setup() > { > > > Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(typeof(ServiceContractAttribute)); > > > Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(typeof(OperationContractAttribute)); > > _mocks = new MockRepository(); > _calculatorServiceMock = > _mocks.DynamicMock<ICalculatorService>(); > _circleMock = _mocks.PartialMock<Circle>(); > > _calculatorServiceHost = new > ServiceHost(_calculatorServiceMock, new Uri[] { new Uri("http:// > localhost:9090") }); > > _calculatorServiceHost.AddServiceEndpoint(typeof(ICalculatorService), > new BasicHttpBinding(), String.Empty); > > > _calculatorServiceHost.Description.Behaviors.Find<ServiceBehaviorAttribute>().InstanceContextMode > = InstanceContextMode.Single; > _calculatorServiceHost.Open(); > } > > [TearDown] > public void TearDown() > { > _calculatorServiceHost.Close(); > } > > [Test] > > [ExpectedException(typeof(FaultException<ArgumentNullException>))] > public void Test() > { > using (_mocks.Record()) > { > //If we don't set this expectation the test will pass. > Expect.Call(_circleMock.GetRadius()).Return(17); > > Expect.Call(_calculatorServiceMock.Multiply(0, > 0)).IgnoreArguments() > .Throw(new > FaultException<ArgumentNullException>(new > ArgumentNullException("Forced Exception!"))); > } > > _mocks.ReplayAll(); > > try > { > _circleMock.GetArea(); > } > finally > { > _mocks.VerifyAll(); > } > } > } > > > > //--------------------------------------------------------------------------------------------------- > } > > -- > You received this message because you are subscribed to the Google Groups > "Rhino.Mocks" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<rhinomocks%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/rhinomocks?hl=en. > > -- Tim Barcz Microsoft C# MVP Microsoft ASPInsider http://timbarcz.devlicio.us http://www.twitter.com/timbarcz -- You received this message because you are subscribed to the Google Groups "Rhino.Mocks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rhinomocks?hl=en.
