将html与testacularjs集成时出错

时间:2012-10-22 20:21:44

标签: unit-testing continuous-integration jasmine fixtures

如何将(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;在配置中,但测试运行器刚刚爆炸。

2 个答案:

答案 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
  }
];

我刚尝试过,它对我来说很好。