【问题标题】:Using module.exports in jasmine specs在茉莉花规格中使用 module.exports
【发布时间】:2016-04-29 22:12:08
【问题描述】:

我想在经过测试的 js 中使用 module.exports 并使用 require() 将其包含到规范脚本中。

cat.js - 包含我要导出的对象的文件

var cat = {
    name: "filemon",

    meow: function () {
        return "miau";
    },
    walk: function () {
        return "siup siup siup";
    }
}
module.exports = cat

catTest.js - 猫的规范

var cat = require('../app/cat')
describe("Cat test", function () {
    it("cat should meow with miau", function () {
        expect(cat.meow()).toBe("miau")
    })
})

当我使用 jasmine CLI(使用 npm 下载)运行测试时,测试通过:

marcins-iMac:untitled marcin$ jasmine
Started
..

2 specs, 0 failures
Finished in 0.004 seconds

但是当我尝试使用 karma runner 运行测试时,module 是未定义的:

marcins-iMac:untitled marcin$ karma start
29 04 2016 23:52:29.238:WARN [karma]: No captured browser, open http://localhost:9876/
29 04 2016 23:52:29.248:WARN [karma]: Port 9876 in use
29 04 2016 23:52:29.248:INFO [karma]: Karma v0.13.22 server started at http://localhost:9877/
29 04 2016 23:52:29.252:INFO [launcher]: Starting browser Chrome
29 04 2016 23:52:30.112:INFO [Chrome 50.0.2661 (Mac OS X 10.11.2)]: Connected on socket /#MJ-R1hm8uQEvSJq9AAAA with id 29613373
Chrome 50.0.2661 (Mac OS X 10.11.2) ERROR
  Uncaught ReferenceError: module is not defined
  at /Users/marcin/WebstormProjects/untitled/app/cat.js:9

我得到的一些想法并没有帮助:

  • 将 require.js 添加到 karma.config.js 的“文件”中
  • 将测试对象添加到窗口作用域(它很难看,不能使用 CLI)

如果可能是配置问题,github上的项目:https://github.com/marcinmierzejewski1024/jasmine-karma-playground

【问题讨论】:

    标签: javascript node.js jasmine karma-runner bdd


    【解决方案1】:

    所以这就是我为使测试用例工作而做的事情。

    karma.config.js 中的文件部分更改为以下内容。

    files: [
      '/app/cat.js',
      '/app/dog.js',
      'spec/catTest.js',
      'spec/dogTest.js'
    ],
    

    karma.comfig.js 中的框架部分更改为以下内容

    frameworks: ['jasmine','browserify'],
    

    karma.config.js 中的预处理器部分更改为以下内容。

    preprocessors: {
      'spec/catTest.js': ["coverage",'browserify'],
      'spec/dogTest.js': ["coverage",'browserify']
    },
    

    你的最终package.json 应该如下所示。

    {
      "name": "untitled",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "jasmine",
        "dev-mode": "karma start karma.conf.js",
        "test-report": "TODO:",
        "test-coverage": "TODO:"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "browserify": "^13.0.0",
        "jasmine": "^2.4.1",
        "jasmine-core": "^2.4.1",
        "karma": "^0.13.22",
        "karma-browserify": "^5.0.4",
        "karma-chrome-launcher": "^0.2.3",
        "karma-jasmine": "^0.3.8",
        "karma-safari-launcher": "^0.1.1",
        "require": "^2.4.20",
        "requirejs": "^2.2.0",
        "watchify": "^3.7.0"
      }
    }
    

    附:在浏览器中运行测试用例需要browserify

    文件部分可能不是声明文件的正确方式,但它可以帮助您入门,并且您可以尝试使用它。

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      相关资源
      最近更新 更多