开发者

MVC Controller, testing a WCF service that is wrapped in a proxy

开发者 https://www.devze.com 2023-02-25 02:52 出处:网络
I am trying to figure how to create tests for my controllers that are consuming a WCF service (via a proxy class)

I am trying to figure how to create tests for my controllers that are consuming a WCF service (via a proxy class)

The proxy class is pretty much identical to the one listed in this post http://blog.weminuche.net/2008/08/test-post.html

Base Controller

public abstract class ServiceProxyController<TService> : Controller
    where TService : class 
{

    private readonly ServiceProxy<TService> _proxyHelper;

    protected ServiceProxyController(string endpoint)
    {
        _proxyHelper = new ServiceProxy<TService>(endpoint);
    }

    private Stuff GetStuff(int num)
    {
         Call((service) =>  {
                    service.DoSomeStuff(num)
                 });
                ................
            }
     ...........
 }

Controller Implementation

public class MyController : ServiceProxyController<IService>
{
    public MyController() : base("ServiceBindingName")
    {
    }

     }

I want to be able to inject a proxy helper(???) into my controller so as I c开发者_StackOverflow中文版an mock it and therefor test the controller


How about injecting the proxy helper to the constructor (notice the introduction of an abstraction):

private readonly IServiceProxy<TService> _proxyHelper;
protected ServiceProxyController(IServiceProxy<TService> proxyHelper)
{
    _proxyHelper = proxyHelper;
}

and the controller:

public MyController(IServiceProxy<TService> proxyHelper) 
    : base(proxyHelper)
{
}

This way in your unit test when instantiating the controller you could inject a mocked instance of the IServiceProxy<TService> interface.

You will then need to configure your DI framework to insert the proper implementation into the controller constructor which will wrap the actual ChannelFactory.


I just asked a similar question. I am injecting the service using structure map. I am dynamically creating a proxy using channel factory.

Look at this example for using Channel factory.

creating WCF ChannelFactory<T>

My question for your reference.

Rhinomocks - Mocking delegates

Note- Actually it was Darin who posted the ServiceInvoker

0

精彩评论

暂无评论...
验证码 换一张
取 消