c#测试修改的会话变量

本文关键字:会话 变量 修改 测试 | 更新日期: 2023-09-27 18:10:14

现在我正试图测试会话变量。例如我设置:

Session["test"] = "test";

:

if (blah) { Session["test"] = "foo"; }
else if (testing) { Session["test"] = "foo2"; }

我希望能够运行测试,以便根据我设定的条件,我可以看到Session变量已适当更改。我试过使用Moq,我能够创建一个模拟会话,然后定义一个变量来返回特定的东西:

controllerContext.Setup(x => x.HttpContext.Session["test"]).Returns("test");

这在运行测试时不会改变。如果我使用会话包装器强类型变量,因为我试图在控制器之间传递模拟会话和上下文,这似乎更加复杂。

我读过一些关于FakeContext和Fake Sessions的内容,而不是Mock。我也听说过一些关于委托的使用。真的,我只是试图模拟代码实际运行时发生的事情,并确保最终结果是我所期望的,它往往取决于我的会话变量。测试他们的修改是否正确完成的最佳方法是什么?

c#测试修改的会话变量

很高兴看到您使用了Moq,在这种情况下,您可以断言代码是否试图设置会话,而不是断言会话的值。对行为的断言基本上…

这里有几个有用的链接:

ASP。. NET MVC单元测试-会话

ASP。. NET MVC技巧#12 -伪造控制器上下文