我正在使用 Moq 创建 HttpResponseBase 的模拟对象。我需要能够测试在我的库中调用了 HttpResponseBase.End() 。为此,我在调用之前指定了一些文本,在调用之后指定了一些文本。然后我检查 HttpResponseBase.Output 中只有调用 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;
}