6

如何使用 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 ./
4

3 回答 3

0

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

我有这个:

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

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

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

require ["disrasher"], (mod) ->

  describe "A test", ->
    it "should fail", ->
      expect(1).toEqual 0

它目前实际上不起作用,因为我认为我没有正确地将项目与 require 联系起来。当它发生时,我会在这里发帖。

于 2013-02-12T17:04:53.627 回答
0

如果有人遇到这个问题,那么自从提出这个问题以来已经发生了很大变化。首先要检查的仍然是您将文件命名为thing.spec.coffee.

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

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

然后告诉 jasmine 使用这个设置文件:

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

一件好事是您不需要在每个规范文件中包含 requirejs 配置。

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

于 2020-04-07T06:49:09.543 回答
-2

jasmine-node 和 require.js 似乎完全不兼容。也就是说,可以使用一些额外的代码在 node 中的 require.js 模块上运行 jasmine 测试。看看https://github.com/geddski/amd-testing看看如何。

于 2013-01-10T12:51:32.927 回答