Need help with Mocking

2 posts, 0 answers
  1. Neeraj
    Neeraj avatar
    1 posts
    Member since:
    Dec 2014

    Posted 15 Dec 2014 Link to this post

    Hi All,We have a requirement where we have to use NUnit to write test methods and JustMock for mocking the application. Dep injOur application is exposing WCF services and the unit tests will be written to test the WCF Operations.We are using VS 2013.In our application we are using Dependency injection while calling the Constructor i.e. the parameters to the Constuctor are created

    using Dependency injection.Pls refer below
    public NetworkService(IDbContextFactory<NetworkDbContext> contextFactory, IEventBus eventBus, HostService hostService, UserManagementService userManagementService)
            {
                _contextFactory = contextFactory.ThrowIfNull("contextFactory");
                _eventBus = eventBus.ThrowIfNull("eventBus");
                _hostService = hostService.ThrowIfNull("hostService");
                _userManagementService = userManagementService.ThrowIfNull("userManagementService");
          }

    I tried mocking using Telerik Justmock to create the objects of ContextFactory/EventBus etc but the object create using mocking was of type Proxy of actual object rather than the object itself i.e. Proxy of IEventBus rather than IEventBus.The issue with this is, the _contextFactory object is used to create a context like below
    using (var ctx = _contextFactory.Create())

    But as the object is of type Proxy(Object) I am unable to create the context ctx in above scenario and hence the testing fails.

    Can anyone please help me with the mocking.

    Any help will be highly appreciated.

    Thanks in advance.
  2. Stefan
    Admin
    Stefan avatar
    198 posts

    Posted 17 Dec 2014 Link to this post

    Hello Neeraj,

    The entire point of using JustMock is to create mock objects, i.e. objects that look just like the real objects, i.e. they implement the same interfaces, derive from the same base class, but the don't have an actual implementation. If you wanted to retain the actual implementation, you wouldn't need a mock - you would just use the actual type, instead.

    I'm guessing here that you don't want to use the real implementation, but you still want to configure the mock object's behavior. To do that you need to arrange them. For example:
    var mockContext = Mock.Create<Context>();
    Mock.Arrange(() => contextFactory.Create()).Returns(mockContext);
    In the above I arrange the return value of contextFactory.Create() to always be mockContext. I can then arrange the mockContext additionally to further configure its behavior as necessary for the test to succeed.

    We have a great learning resource for JustMock and mocking in general located here. I suggest that you peruse it to deepen your understanding of mocking and TDD in general. Your question should be answered in sufficient depth in "Day 12" of the series.

    Regards,
    Stefan
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
  3. DevCraft R3 2016 release webinar banner
Back to Top