如何使用php项目设置Jest for Unit测试正常?

时间:2017-08-03 05:44:17

标签: javascript unit-testing jest

我需要为我的PHP项目设置前端单元测试。 我决定和Jest一起去。

所以这是我的package.json。

{{#my-yield-component2 as |valueToYield|}}
    {{my-other-component3 field=(my-helper prop1) otherField=valueToYield}}
{{/my-yield-component2}}

然后我创建了{ "name": "staging-deploy", "version": "1.0.0", "description": "Staging deploy", "main": "GulpFile.js", "author": "some one", "license": "BSD-2-Clause", "dependencies": { "bower": "^1.8.0", "gulp": "^3.9.1", "gulp-autoprefixer": "^3.1.1", "gulp-chmod": "^2.0.0", "gulp-closure-compiler": "^0.4.0", "gulp-concat": "^2.6.1", "gulp-cssnano": "^2.1.2", "gulp-duration": "0.0.0", "gulp-jasmine": "^2.4.2", "gulp-less": "^3.3.2", "gulp-load-plugins": "^1.4.0", "gulp-pixrem": "^1.0.0", "gulp-postcss": "^6.3.0", "gulp-replace": "^0.5.4", "gulp-sourcemaps": "^1.11.0", "gulp-update": "0.0.2", "gulp-update-modul": "^1.5.5", "gulp-watch-less": "^1.0.1", "run-sequence": "^2.0.0" }, "devDependencies": { "jest": "^20.0.4" }, "scripts": { "test": "jest" } } 文件夹并制作了我的第一个测试函数。

// homepage.test.js

__tests__

这是我的主页.js

// homepage.js

require('../modules/homepage.js');

test('adds 1 + 2 to equal 3', function() {
    expect(Homepage.sum.sumNumber(1, 2)).toBe(3);
});

然后我跑了var Homepage = {}; (function() { "use strict"; Homepage.sum = { sumNumber: function(num1, num2) { return num1 + num2 } }; })(); 这就是我得到的:

npm run test

好像我的测试文件无法访问我的Homepage.js文件中的函数。

如何解决此问题并使其有效?

由于

1 个答案:

答案 0 :(得分:0)

Common js模块加载器不能以这种方式工作。如果要导出模块的任何内容,则应将其附加到module.exports对象,或者只是覆盖它。这个对象是唯一从模块导出的东西。这样:

// homepage.js

"use strict";
var Homepage = {};

Homepage.sum = {
        sumNumber: function(num1, num2) {
            return num1 + num2
        }
    };

module.exports = Homepage;

注意您不需要使用IIFE,因为所有js文件都具有模块化并且具有自己的范围。

然后在你的homepage.test.js文件中:

// homepage.test.js

var Homepage = require('../modules/homepage.js');

test('adds 1 + 2 to equal 3', function() {
    expect(Homepage.sum.sumNumber(1, 2)).toBe(3);
});