如何使用 RequireJS 运行茉莉花节点测试



如何使用jasmine-node和RequireJS正确运行jasmine测试?

我已经尝试过这样的东西,但不起作用(CoffeeScript):

requirejs = require 'requirejs'
requirejs.config { baseUrl: __dirname + '/../' }
requirejs ['MyClasses', 'FooClass'], (MyClasses, FooClass) ->
  describe "someProp", ->
    it "should be true", ->
      expect(MyClasses.FooClass.someProp).toEqual true

在 0 秒内完成 0 次测试, 0 次断言, 0 次失败

我的目标是使用RequireJS,CoffeeScript编写模块化类,并且类必须可以使用jasmine-node(CI服务器)进行测试。

请问我该怎么做?谢谢!

编辑:

我用命令执行测试(在带有测试的目录中):

jasmine-node ./

Jonathan Tran是对的,这是我文件名中的规范。

我有这个:

"scripts": {
   "install": "cake install",
   "test": "node_modules/jasmine-node/bin/jasmine-node --verbose --coffee --runWithRequireJs --captureExceptions spec"
},

在我的package.json中,我从项目内部安装了Jasmine-node npm install jasmine-node

名为 RingBuffer.spec.coffee 的最小测试文件

require ["disrasher"], (mod) ->
  describe "A test", ->
    it "should fail", ->
      expect(1).toEqual 0

它目前实际上不起作用,因为我还没有正确连接项目,我认为不需要。当它发生时,我会在这里发帖。

如果有人遇到这个问题,自从提出这个问题以来,情况发生了很大变化。 首先要检查的是,您仍然像 thing.spec.coffee 一样命名文件。

但是,如果您正在运行测试并且仍然看到输出"0 tests",则需要使用 requirejs 配置创建一个 JavaScript 文件。 这一定是JavaScript,而不是CoffeeScript。

// requirejs-setup.js
requirejs = require('requirejs');
requirejs.config({ baseUrl: __dirname + '/../' });

然后告诉茉莉花使用此安装文件:

jasmine-node --coffee --requireJsSetup requirejs-setup.js ./

这样做的一个好处是,你不需要在每个规范文件中都包含requirejs配置。

我已经在节点 v12.16、jasmine-node v3.0.0 和 requirejs v2.3.6 上对此进行了测试。

似乎茉莉花节点和 require.js 完全不兼容。也就是说,可以使用一些额外的代码在节点中的require.js模块上运行Jasmine测试。看看 https://github.com/geddski/amd-testing,看看怎么做。

最新更新