我们正在使用Handlebars.net在我们的asp.net Web应用程序中启用模板化。我们在数据库中提供用户可自定义的模板以及"罐装"开发人员通过Web上的文件系统创建和提供的模板。为了确保我们的预制模板正确呈现,我想用MSTest单元测试来测试它们。
如何确保在同一解决方案中的单独测试项目中使用MSTest加载网站中的同一文件?
答案 0 :(得分:0)
这是加载HandleBars模板并使用数据填充它们的代码:
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。现在您可以保证您的Web代码和测试套件正在使用相同的模板文件。有关详细信息,请参阅下面的答案评论。
更新09/06
在第三个项目中,您可以将“固定模板”HTML文件添加为project resource。查看链接了解详情。我的团队将其“Build Action”设置为“Embedded Resource”(因此它嵌入到已编译的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();
}
}
}