.CORE xUnit测试HttpContext.Session

时间:2019-07-03 11:00:41

标签: unit-testing asp.net-core xunit httpcontext

我通过xUnit测试Api控制器。
在测试方法中,我需要在LoginUser 上设置诸如HttpContext.Session之类的变量,并在Tested Controller中获得它

我的控制器:

    [HttpGet, Route("SomeTestedApi")]
    public async Task<ActionResult<bool>> SomeTestedApi(int id)
    {
        try
        {
            var sessionUser = HttpContext.Session.Get<LoginUser>("loginUser");
        }
    }

我的xUnit测试:

    [Fact]
    public async Task ChangeMySupplierTest()
    {
        try
        {
            LoginUser loginUser = await login();
            _httpContext.Session.Set("loginUser", loginUser);
            var request = "/api/SomeTestedApi/?id=5";
            var response = await _client.GetAsync(request);
            Assert.Equal(response.ReasonPhrase, "OK");

        }
    }

如果Controller通过实数HTTP request调用,则在执行LoginController之后调用它。在这种情况下,SessionContext.Session对象已经收到一个值。

但是在通过测试调用时,并没有真正保留HttpContext.Session,所以我得到了NULL

有没有办法做到这一点?

0 个答案:

没有答案