我們正在使用Handlebars.net在我們的asp.net web應用程序中啓用模板。我們在數據庫中提供用戶可自定義的模板,以及通過Web上的文件系統創建並提供的「預製」模板。爲了確保我們的模板模板能夠正確渲染,我想用MSTest單元測試來測試它們。如何爲Web和單元測試製作自定義內容模板?
我該如何確保從網站上的相同文件在同一解決方案中的單獨測試項目中正在使用MSTest加載?
我們正在使用Handlebars.net在我們的asp.net web應用程序中啓用模板。我們在數據庫中提供用戶可自定義的模板,以及通過Web上的文件系統創建並提供的「預製」模板。爲了確保我們的模板模板能夠正確渲染,我想用MSTest單元測試來測試它們。如何爲Web和單元測試製作自定義內容模板?
我該如何確保從網站上的相同文件在同一解決方案中的單獨測試項目中正在使用MSTest加載?
這是載入你的車把模板和數據填充它們中的代碼:
var htmlTemplateStr = //Open your "Canned Template" and load it into this string
var LoadedTemplate = Handlebars.Compile(htmlTemplateStr);
var contextObject = //create an object that will hold all the variables your
// template will be looking for
var outputHtml = LoadedTemplate(contextJson);
封裝這個代碼到自己的項目。讓具有Web代碼的項目以及具有測試的項目都可以引用此項目,以生成句柄欄HTML。現在您可以確保您的網頁代碼和測試套件正在使用相同的模板文件。有關更多詳細信息,請參閱下面的答案評論。
更新09/06
在你的第三個項目,你可以添加你的 「罐頭模板」 HTML文件作爲project resource。查看詳細鏈接。我的團隊將其「Build Action」設置爲「嵌入式資源」(所以它嵌入到編譯後的dll中),並將其「Copy To Output Directory」設置爲「Do not Copy」(不應複製任何內容),因爲它將被嵌入到DLL)
一旦罐頭模板HTML文件添加到您的項目作爲一種資源,你可以用下面的函數檢索HTML:
private string GetCannedTemplateHtml(string resourceFilename)
{
Assembly assem = this.GetType().Assembly;
using(Stream stream = assem.GetManifestResourceStream(resourceFilename))
{
using (var reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
}
是你的罐頭模板也存儲在數據庫中? –
不,他們被存儲爲文本文件 –