我有一个简单的“hello world”项目,我想测试着名的hélloWorld功能。
项目结构如下:
├── package.json
├── spec
│ ├── helloWorldSpec.js
│ └── support
│ └── jasmine.json
└── src
└── helloWorld.js
文件内容:
的package.json
{
"name": "jasmineTest",
"version": "0.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "BSD-2-Clause",
"dependencies": {
"jasmine": "~2.1.0"
}
}
规格/ helloWorldSpec.js
// var helloWorld = require('../src/helloWorld.js');
describe('Test', function() {
it('it', function() {
helloWorld();
});
});
的src / helloWorld.js
function helloWorld() {
return "Hello world!";
}
// module.exports = helloWorld;
规格/支持/ jasmine.json
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
]
}
我的问题:
当我运行npm install
时,下载了jasmine
=>确定
当我跑./node_modules/jasmine/bin/jasmine.js
时
我有错误ReferenceError: helloWorld is not defined ReferenceError: helloWorld is not defined
我的问题:
如何在不使用module.exports = xxx的情况下访问测试范围中src/helloWorld.js
中包含的方法helloWord。
答案 0 :(得分:1)
解决方案是使用Grunt。
创建 GruntFile.js ,其中包含:
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
jasmine: {
src: ['src/**/*.js'],
options: {
specs: ['spec/**/*Spec.js'],
vendor: []
}
}
});
grunt.loadNpmTasks('grunt-contrib-jasmine');
};
使用 grunt , grunt-cli 和 grunt-contrib-jasmine <更新 package.json / em>依赖
{
"name": "jasmineTest",
"version": "0.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "BSD-2-Clause",
"dependencies": {
"jasmine": "~2.1.0",
"grunt": "~0.4.5",
"grunt-cli": "~0.1.13",
"grunt-contrib-jasmine": "~0.8.1"
}
}
更新npm依赖项:
npm update
使用grunt重新启动测试,而不是直接使用jasmine:
./node_modules/grunt-cli/bin/grunt jasmine
你得到了:
Running "jasmine:src" (jasmine) task
Testing jasmine specs via PhantomJS
Test
- it...
log: Spec 'Test it' has no expectations.
✓ it
1 spec in 0.008s.
>> 0 failures
完成,没有错误。
答案 1 :(得分:0)
据Jasmine工作人员说:
您不需要在配置中指定源文件 - 只需从规范文件中输入它们。
https://github.com/jasmine/jasmine-npm/issues/49
但是,你确实需要使用导出。 这不是Jasmine问题,而是vanilla Javascript。您想从另一个文件调用方法,因此您需要导出并要求它。 为什么不想要?