c# - 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!
解决方案
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
推荐阅读
- angular-material - 刷新物料日历
- android - 在 dart 中解析来自云的嵌套 JSON 但出现类型错误
- javascript - 如何在 tensorflow.js 中通过 model.executeAsync(x) 执行 tf.grad
- flutter - 如何在http包中使用flutter发布表单数据请求
- javascript - 在单个 div 块中合并几个 div
- io - Virtual Box 共享文件夹与网络驱动器
- python - 如何在 python 中使用正则表达式在标签之间查找单词?
- c# - System.Char.Parse,值不能为空
- python - 如何在 Kubernetes 中部署的 Dask Gateway 中调试 CommClosedError
- python - Python API 无法使用 aiohttp 获取请求