现在我正在尝试测试Session变量。例如我设置:
Session["test"] = "test";
然后:
if (blah) { Session["test"] = "foo"; }
else if (testing) { Session["test"] = "foo2"; }
我希望能够运行测试,以便根据我提出的条件,我可以看到Session变量已经适当地改变了。我尝试过使用Moq,我可以创建一个Mock Session,然后定义一个变量来返回特定的东西:
controllerContext.Setup(x => x.HttpContext.Session["test"]).Returns("test");
虽然在测试中运行但这并没有改变。 如果我通过使用Session包装器强力键入变量,似乎更加复杂,因为我尝试在控制器之间传递模拟会话和上下文。
我读了一些关于FakeContext和Fake Sessions的内容,而不是Mock。我也听过一些关于使用代表的消息。实际上,我只是想模仿代码实际运行时发生的事情,并确保最终结果是我所期望的,并且它通常取决于我的Session变量。正确地进行测试修改的最佳方法是什么?
答案 0 :(得分:2)
很高兴看到你使用了Moq,在这种情况下,如果代码试图设置会话,你可以断言会话的值,而不是断言会话的值。基本上断言行为..
以下是一些有用的链接: