在 jasmine 规范中使用 module.exports
Using module.exports in jasmine specs
我想在测试的 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 运行ner 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
我得到的一些想法没有帮助:
- 在 karma.config.js
中将 require.js 添加到 "files"
- 将测试对象添加到 window 范围(它很丑并且不能与 CLI 一起使用)
如果问题可能是由配置引起的,请在 github 上进行项目:https://github.com/marcinmierzejewski1024/jasmine-karma-playground
这就是我为使测试用例工作所做的工作。
将 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"
}
}
P.S。 browserify
需要 运行 您在浏览器中的测试用例。
文件部分可能不是声明文件的正确方式,但它可以帮助您入门并尝试使用它。
我想在测试的 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 运行ner 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
我得到的一些想法没有帮助:
- 在 karma.config.js 中将 require.js 添加到 "files"
- 将测试对象添加到 window 范围(它很丑并且不能与 CLI 一起使用)
如果问题可能是由配置引起的,请在 github 上进行项目:https://github.com/marcinmierzejewski1024/jasmine-karma-playground
这就是我为使测试用例工作所做的工作。
将 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"
}
}
P.S。 browserify
需要 运行 您在浏览器中的测试用例。
文件部分可能不是声明文件的正确方式,但它可以帮助您入门并尝试使用它。