如何对 Umbraco Api 控制器进行单元测试 - System.ArgumentNullException: 'Value cannot be null. Parameter name: umbracoContext'

How to unit test Umbraco Api controller - System.ArgumentNullException: 'Value cannot be null. Parameter name: umbracoContext'

我正在尝试为 UmbracoApiController 编写单元测试,但是当 运行 测试时,我在创建 api 控制器的新实例时遇到错误。

我已经开始研究模拟 umbraco 上下文,但没有取得太大进展,因为我对它太陌生了。

[TestMethod]
public void GetAllMembers()
{
    var c = new GroupManagerApiController();
    Assert.Fail();
}

控制器

public class GroupManagerApiController : UmbracoApiController

创建控制器的新实例时,我收到以下错误消息:

System.ArgumentNullException: 'Value cannot be null.
Parameter name: umbracoContext'

请指导我。

谢谢。

http://blog.aabech.no/archive/the-basics-of-unit-testing-umbraco/

这篇博客解决了这个问题。

需要使用以下内容创建设置方法:

[SetUp]
public void SetUp()
{
    var applicationContext = new ApplicationContext(
        CacheHelper.CreateDisabledCacheHelper(),
        new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>())
    );
    UmbracoContext.EnsureContext(
        Mock.Of<HttpContextBase>(),
        applicationContext,
        new WebSecurity(Mock.Of<HttpContextBase>(), applicationContext),
        Mock.Of<IUmbracoSettingsSection>(),
        Enumerable.Empty<IUrlProvider>(),
        true
    );
}