如何将(html)灯具与testacular集成?有没有建议进行基于DOM的测试,还是反模式?
目标:我正在尝试测试一个解析DOM树并创建新数据结构的自定义模块。 DOM树可以是动态的(如html / markdown编辑器的内容),因此不适合进行端到端测试
问题:我正在尝试使用jasmine-jquery进行此DOM测试,在我的testacular.conf.js中,我有一节允许将html文件加载到浏览器中。
// list of files / patterns to load in the browser
files = [
JASMINE,
JASMINE_ADAPTER,
'test/spec/**/*.js',
'test/fixtures/*.html' **/* Needs to be included here to be served */**
];
但是在我的命令行测试运行器中,当我删除html fixture时(甚至在我编写任何jasmine-jquery代码来加载fixture之前),我收到以下错误消息:
Chrome 22.0 **ERROR**
Uncaught SyntaxError: Unexpected token < at /Users/myUser/myProject/test/fixtures/fixture_template.html:1 Chrome 22.0: Executed 0 of 0 ERROR (0.143 secs / 0 secs)
编辑 :提出同样问题的另一种方式:如何让hacular服务于html并且不会让测试运行员崩溃?
正如我上面提到的,我需要包含&#39; test / fixtures / * .html&#34;在配置中,但测试运行器刚刚爆炸。
答案 0 :(得分:9)
当前版本的testacularjs无法支持此功能。 然而,testacularjs(Vojta Jina)的作者建议我使用代理解决方案通过不同的Web服务器提供html来解决这个问题。对于那些好奇的人来说,这是使这项工作有效的端到端步骤。
首先通过运行如下命令
运行Web服务器python -m SimpleHTTPServer 3502&amp;
将灯具文件放在适当的位置。我的是test / fixtures / first.html
现在您应该能够访问[http:// localhost:3502 / test / fixtures / first.html]并在检查页面源时看到标记
编辑testacular.conf.js以添加配置块
proxies = {
'/fixtures' : 'http://localhost:3502/'
};
编辑您的茉莉花单元测试以获得如下所示的块
beforeEach(function(){
jasmine.getFixtures().fixturesPath = '/fixtures/test/fixtures';
});
现在你应该能够加载fixture / readfixture
答案 1 :(得分:6)
如http://testacular.github.com/0.6.0/config/files.html所述,自版本0.5.2起,您可以使用新的配置语法:
files = [
JASMINE,
JASMINE_ADAPTER,
'test/spec/**/*.js',
{
pattern: 'test/fixtures/*.html',
watched: true,
included: false,
served: true
}
];
我刚尝试过,它对我来说很好。