首页 > 解决方案 > Can not create Umbraco MembersMembershipProvider in unit test

问题描述

I am creating unit tests for my website base on Unit framework. In my unit test, I need to create a MembersMembershipProvider of Umbraco, but it threw null exception:

System.NullReferenceException : Object reference not set to an instance of an object.
   at Umbraco.Web.Security.Providers.MembersMembershipProvider..ctor()
   at Tests.Controllers.MemberControllerTests.Test_ValidateUser() in 

This is my unit test:

[TestFixture]
public class Test_ProxyMembershipProvider
{
    [Test]
    public void Test_ValidateUser()
    {
        var s = new MembersMembershipProvider();
    }
}

What should I fix or I missed something? Any help are highly appreciate!

Cheer!

标签: c#asp.netumbraco

解决方案


The null reference occurs because the MembersMembershipProvider uses IMembershipMemberService in the constructor. If you use the constructor without parameters it will try to get the IMembershipMemberService from the ApplicationContext (which is null since you're running unittests). You can add a mocked version of this service to the constructor parameters:

var mServiceMock = new Mock<IMembershipMemberService>();
var s = new MembersMembershipProvider(mServiceMock.Object);

For more implementation details of MembersMembershipProvider check out the github sourcecode


推荐阅读