在jasmine规范中使用module.exports

我想在testing的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下载)运行testing时,testing通过:

 marcins-iMac:untitled marcin$ jasmine Started .. 2 specs, 0 failures Finished in 0.004 seconds 

但是当我尝试运行testing与业力亚军模块是未定义的:

 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 

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

  • 在karma.config.js文件中添加require.js文件
  • 添加testing对象到窗口范围(这是丑陋的,不适用于CLI)

如果问题可能是由configuration引起的,请在github上的项目: https : //github.com/marcinmierzejewski1024/jasmine-karma-playground

所以这就是我所做的testing用例的工作。

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

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

karma.comfig.js框架部分karma.comfig.js为以下

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

karma.config.js预处理器部分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" } } 

PS browserify需要在浏览器中运行你的testing用例。

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