如何使用fakeiteasy编写包含对HttpContext调用的代码的MSpec测试?

时间:2011-04-15 15:06:25

标签: asp.net-mvc-3 mspec fakeiteasy

我正在惹恼众所周知的短裤。对于这个非常简单的代码:

public ActionResult Add()
    {

        this.HttpContext.Items["pm-page-title"] = "Some title";

        return this.View();
    }

如何使用fakeiteasy编写MSpec测试,以验证是否返回了视图,并且更有针对性地设置了页面标题?

TIA,

大卫

1 个答案:

答案 0 :(得分:1)

// arrange
var sut = new SomeController();
sut.ControllerContext = A.Fake<ControllerContext>();
var fakeContext = A.Fake<HttpContextBase>();
A.CallTo(() => sut.ControllerContext.HttpContext).Returns(fakeContext);
A.CallTo(() => fakeContext.Items).Returns(new Hashtable());

// act
var actual = sut.Add();

// assert
Assert.AreEqual("Some title", (string)fakeContext.Items["pm-page-title"]);