我想测试我制作的原型函数。
我的设置包含3个文件:
Base.js - 基本文件,我的所有第二个文件都有共同点
function prop(to, name, func) {
Object.defineProperty(to.prototype, name, {
value: func,
writable: true,
configurable: true
});
return func;
}
Array.js - 修改给定Object原型的文件。
prop(Array, 'hasPresent', function(what) {
return !!~this.indexOf(what)
});
/tests/Array.js - 测试自己
describe('hasPresent()',function(){
it('number', function(done){
expect([0,1,2].hasPresent(0)).toBe(true)
done()
})
})
所有这些都是从nodeJS完成的,它监视文件的变化。我担心的是,它会从第二个文件(prop is not defined ... at Array.js:1
)返回错误。这告诉我,这些文件不会在相同的上下文中进行评估。有没有办法让这项工作?或者从节点启动时如何在测试文件中获取__direcotory
变量。
我在nodejs中的设置:
jasmine.loadConfig({
spec_files: ['Base.js','Array.js']
helpers: ['Base.js','Array.js']
})
jasmine.execute(['tests/Array.js']);
PS:我尝试将eval放在tests/Array.js
中,但加载后忘记了工作目录,所以我必须使用绝对路径,如果有办法解决这个问题,那就太好了。
答案 0 :(得分:0)
您只需要使用Node.js的常规模块机制:https://nodejs.org/api/modules.html
以下是您可以适应测试的基本示例:
foo.js的内容:
const circle = require('./circle.js');
console.log(`The area of a circle of radius 4 is ${circle.area(4)}`);
circle.js的内容:
const PI = Math.PI;
exports.area = (r) => PI * r * r;
exports.circumference = (r) => 2 * PI * r;