Mocha / ExpectJs:尝试实现揭示原型模块但无法测试

时间:2016-05-15 18:48:00

标签: javascript mocha

我已经读过有关揭示原型模式的内容。我创建了一个返回对象的函数。

'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)

我整天都在苦苦挣扎。为什么测试不起作用?我错过了一些简单的东西吗?

1 个答案:

答案 0 :(得分:0)

您的模块正在向导出对象添加名为testProperty的属性:

exports.testPrototype = ...

但是Mocha测试文件使用的是exports对象本身,而不是特定的属性:

const testPrototype = require('../testPrototype.js')

相反,您需要明确使用该属性:

const testPrototype = require('../testPrototype.js').testPrototype