我正在使用Moq创建HttpResponseBase的模拟对象。我需要能够测试HttpResponseBase.End()在我的库中被调用。为此,我在通话之前指定了一些文字,之后再指定了一些文字。然后我检查HttpResponseBase.Output中只有调用End()之前的文本。如何模拟HttpResponseBase.End()?
问题是,我想不出如何模拟HttpResponseBase.End(),以便它停止处理,就像它在ASP.NET中一样。
public static HttpResponseBase CreateHttpResponseBase() {
var mock = new Mock<HttpResponseBase>();
StringWriter output = new StringWriter();
mock.SetupProperty(x => x.StatusCode);
mock.SetupGet(x => x.Output).Returns(output);
mock.Setup(x => x.End()) /* what do I put here? */;
mock.Setup(x => x.Write(It.IsAny<string>()))
.Callback<string>(s => output.Write(s));
return mock.Object;
}
谢谢!设置一个标志听起来像是最简单的方法。 – 2009-07-26 15:30:39