我已经读过有关揭示原型模式的内容。我创建了一个返回对象的函数。
'use strict'
exports.testPrototype = (function() {
function testMe() {
return true
}
return {
testMe: testMe
}
})()
console.log(exports.testPrototype.testMe())
const test = Object.create(exports.testPrototype)
console.log(test.testMe())
两次调用console.log
的输出均为true
。
麻烦的是,我无法让Mocha去测试它。
这是我的测试:
const expect = require('expect')
const testPrototype = require('../testPrototype.js')
describe('testPrototype',() => {
it('Should return true', ()=> {
const test = Object.create(testPrototype)
expect(test.testMe()).toEqual(true)
})
})
当我运行测试时,我收到以下错误:
1) testPrototype Should return true:
TypeError: testPrototype.testMe is not a function
at Context.<anonymous> (testPrototype.spec.js:7:24)
我整天都在苦苦挣扎。为什么测试不起作用?我错过了一些简单的东西吗?
答案 0 :(得分:0)
您的模块正在向导出对象添加名为testProperty
的属性:
exports.testPrototype = ...
但是Mocha测试文件使用的是exports对象本身,而不是特定的属性:
const testPrototype = require('../testPrototype.js')
相反,您需要明确使用该属性:
const testPrototype = require('../testPrototype.js').testPrototype