如何用 php 项目正常设置单元测试的 Jest?



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

所以这是我的包.json。

{
"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"
}
}

然后我做了__tests__文件夹,并做了我的第一个测试函数。

主页测试.js

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

这是我的主页.js

主页.js

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

然后我跑npm run test这就是我得到的:

FAIL  __tests__/homepage.test.js
● adds 1 + 2 to equal 3
ReferenceError: Homepage is not defined
at Object.<anonymous> (__tests__/homepage.test.js:4:12)
at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)
at process._tickCallback (internal/process/next_tick.js:109:7)
✕ adds 1 + 2 to equal 3 (2ms)
Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        3.138s, estimated 11s

似乎我的测试文件无法访问我的主页.js文件中的功能。

我怎样才能解决这个问题并使其工作?

谢谢

常见的 js 模块加载器不能以这种方式工作。如果要导出模块的任何内容,则应将其附加到module.exports对象或简单地覆盖它。此对象是唯一将从模块导出的内容。所以:

主页.js

"use strict";
var Homepage = {};
Homepage.sum = {
sumNumber: function(num1, num2) {
return num1 + num2
}
};
module.exports = Homepage;

请注意,您不需要使用 IIFE,因为所有 js 文件的行为都是模块化的,并且有自己的作用域。

然后在您的主页.test.js文件中:

主页测试.js

var Homepage = require('../modules/homepage.js');
test('adds 1 + 2 to equal 3', function() {
expect(Homepage.sum.sumNumber(1, 2)).toBe(3);
});

最新更新