Jasmine js:为测试执行添加源方法

时间:2014-11-26 16:42:02

标签: javascript node.js unit-testing jasmine

我有一个简单的“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。

2 个答案:

答案 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。您想从另一个文件调用方法,因此您需要导出并要求它。 为什么不想要?