我需要为我的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文件中的函数。
如何解决此问题并使其有效?
由于
答案 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);
});