在单元测试期间将HttpContext注入FederatedAuthentication.SessionAuthenticationModule

时间:2016-02-11 16:00:52

标签: c# unit-testing asp.net-web-api2 httpcontext typemock-isolator

我需要在使用FederatedAuthentication对用户进行身份验证的WebAPI项目上运行单元测试。

此行会引发错误,因为HttpContextnull

FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken);

在其他地方,我使用助手来定义HttpContext

public class HttpContextHelper
{
    private static HttpContextBase m_context;
    public static HttpContextBase Current
    {
        get
        {
            if (m_context != null)
                return m_context;

            if (HttpContext.Current == null)
                throw new InvalidOperationException("HttpContext not available");

            return new HttpContextWrapper(HttpContext.Current);
        }
    }

    public static void SetCurrentContext(HttpContextBase context)
    {
        m_context = context;
    }
}

在我通常会引用HttpContext.Current的任何地方,我都使用HttpContextHelper.Current

我在这个帖子中看到了TypeMock Isolator:How to unit test code that uses FederatedAuthentication.SessionAuthenticationModule

帖子暗示我应该使用

Isolate.WhenCalled(() => FederatedAuthentication.SessionAuthenticationModule).WillReturn(<a fake value>);

但是我放入什么/假值/ ??

我是单位测试的新手,因此之前从未使用过模拟,所以我们会感激一些指导。感谢。

0 个答案:

没有答案