2017-06-01 40 views
0

阅读玩笑文档后,当它提到,从他们表现出以下示例的测试文件导出一个单一的功能:现在module.exports多种功能测试

function sum(a, b) { 
    return a + b; 
} 
module.exports = sum; 

,如果我有多个具体功能我想在我的测试文件导出,这样的:

function sum(a, b) { 
    return a + b; 
} 
function multiply(a, b) { 
    return a * b; 
} 
function subtract(a, b) { 
    return a - b; 
} 
module.exports = sum; 
module.exports = multiply; 

multiply功能是用于出口的唯一的一个。我怎样才能让这些功能导出?或者只有我的文件的一部分?

回答

0

首先,在你的榜样,你正在做的有覆盖exports对象与一个函数(这是完全好的)

exportsmodule.exports是一个o bject和实际上是相同的对象(即module.exports === exports // true

,做你想做,你可以这样做一对夫妇的方式是什么:

exports.sum = sum 
exports.multiply = multiply 

module.exports = { sum: sum, multiply: multiply } // etc 

module.exports.sum = sum 
module.exports.multiply = multiply 
+0

谢谢!这真的有助于理解正在发生的事情。顺便说一下,Jest是否要求我随时导出某些内容,或者我可以同时要求整个文件? – gespinha

+1

这不是Jest特定的,它的node.js是特定的。如果你不'出口'它,它是从你的程序的其余部分“隐藏”,并没有办法去。 – sparrow

1

你可以做这样的事情:

module.exports = {}; 
module.exports.sum = function sum(a, b) { 
    return a + b; 
} 
module.exports.multiply = function multiply(a, b) { 
    return a * b; 
} 
module.exports.subtract = function subtract(a, b) { 
    return a - b; 
} 

末你使用这样的:

var MyMathModule = require('./my_math_module'); 
MyMathModule.sum(a, b); 
MyMathModule.multiply(a, b); 
MyMathModule.subtract(a, b);