在jasmine规范中使用module.exports

Using module.exports in jasmine specs

本文关键字:module exports 范中使 jasmine      更新时间:2023-09-26

我想在测试过的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-cat 的规范

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运行测试时,模块未定义:

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

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

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

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

karma.comfig.js中的框架部分更改为低于

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

将CCD_ 3中的预处理器部分更改为以下。

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"
  }
}

p.S.browserify是在浏览器中运行测试用例所必需的。

文件部分可能不是声明文件的正确方式,但它会让你开始,你可以绕过它。