Unit testing 将html与TestCularJS集成时出错

Unit testing 将html与TestCularJS集成时出错,unit-testing,continuous-integration,jasmine,fixtures,Unit Testing,Continuous Integration,Jasmine,Fixtures,如何将(html)fixture与TestCular集成?对执行基于DOM的测试有什么建议吗?或者它是反模式的 目标:我试图测试一个自定义模块,该模块解析DOM树并创建一个新的数据结构。DOM树可以是动态的(就像html/markdown编辑器的内容),因此不适合进行端到端测试 问题:我试图使用jasmine jquery进行DOM测试,在testacular.conf.js中,我有一个部分允许将html文件加载到浏览器中 // list of files / patterns to load

如何将(html)fixture与TestCular集成?对执行基于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装置时(甚至在我编写任何jasmine jquery代码来加载装置之前),我会收到以下错误消息:


Chrome 22.0**错误**
未捕获语法错误:意外标记
编辑:问同样问题的另一种方式:如何让TestCular服务于html而不破坏测试运行程序


正如我前面提到的,我需要在配置中包含'test/fixtures/*.html',但测试运行程序刚刚启动。

当前版本的TestCularJS无法支持这一点。 然而,testacularjs(Vojta Jina)的作者建议我使用代理解决方案,通过不同的web服务器提供html来解决这个问题

  • 首先通过运行如下命令来运行Web服务器

    
    beforeEach(function(){
            jasmine.getFixtures().fixturesPath = '/fixtures/test/fixtures';
        });
    
    python-msimplehttpserver 3502&

  • 将夹具文件放到适当的位置。我的文件是test/fixtures/first.html

    现在你应该可以参观了[http://localhost:3502/test/fixtures/first.html]并在检查页面源代码时查看标记

  • 编辑testacular.conf.js以添加配置块

    
    proxies = {
    '/fixtures' : 'http://localhost:3502/'
    };
    
  • 编辑jasmine单元测试,使其具有如下所示的块

    
    beforeEach(function(){
            jasmine.getFixtures().fixturesPath = '/fixtures/test/fixtures';
        });
    
现在,您应该能够加载Fixture/readfixture,如上所述,因为版本0.5.2可以使用新的配置语法:

files = [
  JASMINE,
  JASMINE_ADAPTER,
  'test/spec/**/*.js',
  {
    pattern: 'test/fixtures/*.html',
    watched: true,
    included: false,
    served: true
  }
];

我刚刚试过,效果很好。

很好,一直在等待!+1,但至少在最近的版本中,您还需要编辑包含的预压缩程序的默认列表,以便不包含html2js。