0
我有一個簡單的網站,有一個頁面。該功能我是單元測試是在單元測試中處理HttpResponse
public void WriteFileToClient(string fileContent, string fileName)
{
StringWriter stringWriter = new StringWriter();
stringWriter.Write(fileContent);
Response.ContentType = "text/plain";
Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.txt", fileName));
Response.Clear();
using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
writer.Write(stringWriter.ToString());
}
Response.End();
}
當我運行我的測試它說,Response
不可
這裏是我的單元測試
[TestMethod]
[TestCategory("Unit")]
public void WriteFileToClient_ShouldSucceedForCorrectInput()
{
//Arrange
Migrate migrate = new Migrate();
Guid g = Guid.Parse("fffe49c1-a838-46bc-b5c6-4e0bbd3e4c32");
string fileContent = migrate.GenerateFlatFileText(g);
string fileName = string.Format("flat file - {0}.txt", g);
//Ask
migrate.WriteFileToClient(fileContent, fileName);
//Assert
migrate.Response.OutputStream.Should().NotBeNull();
migrate.Response.ContentType.Should().Be("text/plain");
migrate.Response.Headers.Should().HaveCount(1);
}
如何嘲笑任何建議響應?老實說,我不明白爲什麼Response
對象不可用,我Migrate
類繼承Page
和我的理解應該有Response
包括
感謝格雷戈裏,這是有道理的。在我的單元測試中,我調用的是生活在Web服務器環境中的函數,因爲我不在Web服務器環境中,所以失敗了。你是否建議模擬依賴關係或者使用'HttpRequest'來測試我的函數? –
在大多數情況下,我使用非常薄的UI位。示例:ASP.NET頁面的事件最多隻有幾行,實際的移動代碼位於類中。但是,我不會更深入地寫入流的代碼,因爲它非常關注用戶界面。然後,根據您正在測試的內容分離測試類型。如果您正在測試Web UI,則更有可能進行集成測試。合理? –
它的確如此,我想我需要一些時間來圍繞它思考 –