8

如何将 (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 夹具时,我收到以下错误消息(甚至在我编写任何 jasmine-jquery 代码来加载夹具之前):


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)

编辑:问同样问题的另一种方式:我如何让 testacular 服务于 html 而不会炸毁测试运行器?

正如我上面提到的,我需要在配置中包含“test/fixtures/*.html”,但测试运行器会爆炸。

4

2 回答 2

9

当前版本的 testacularjs 不能支持这个。但是,testacularjs(Vojta Jina) 的作者建议我使用代理解决方案通过不同的 Web 服务器提供 html 来解决此问题。对于那些好奇的人,这里是完成这项工作的端到端步骤。

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

    python -m SimpleHTTPServer 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';
        });
    

现在您应该可以加载夹具/读取夹具了

于 2012-10-26T05:24:54.007 回答
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
  }
];

我刚试过,对我来说效果很好。

于 2013-03-07T16:13:42.503 回答