【问题标题】:How to run jasmine-node tests with RequireJS如何使用 RequireJS 运行 jasmine-node 测试
【发布时间】:2012-11-16 01:33:09
【问题描述】:

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

【问题讨论】:

  • 你是如何执行茉莉花的?如果您在requirejs 块内放置console.log 'hello',它会打印吗?在it 里面?在requirejs 块之外怎么样?
  • Outside of requirejs 块将首先打印“hello”。第二个将是“hello”inside requirejs 块,来自it 块的“hello”不打印。
  • 你试过jasmine-node --coffee --verbose ./吗?另外,你的规范文件是什么名字?我认为它必须有“规范”作为名称的一部分,如Foo.spec.coffee

标签: node.js requirejs jasmine-node


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    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
    

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

    【讨论】:

      【解决方案3】:

      如果有人遇到这个问题,那么自从提出这个问题以来已经发生了很大变化。首先要检查的仍然是您将文件命名为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 配置。

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

      【讨论】:

        猜你喜欢
        • 2016-01-14
        • 2016-03-19
        • 2015-07-19
        • 2012-06-30
        • 2011-09-04
        • 1970-01-01
        • 2013-06-29
        • 2015-01-18
        • 2016-04-14
        相关资源
        最近更新 更多