我希望能够测试一些内部函数,而无需将Javascript测试代码放在同一个文件中。我一直在尝试继承具有内部函数的类,然后添加包装函数以使它们公开,如下所示:
copyPrototype(TrafficChartCanvas_test, TrafficChartCanvas);
function TrafficChartCanvas_test() {
TrafficChartCanvas_test.prototype.test_getYScale = function(reach) {
return getYScale(reach);
}
}
假设copyPrototype成功将TrafficChartCanvas的原型分配给TrafficChartCanvas_test。这是我试图测试的文件的一部分:
function TrafficChartCanvas(...) {
// some other stuff here... public functions, etc.
function getYScale(reach) {
...
}
}
但是,这对我不起作用。还有其他办法吗?
答案 0 :(得分:3)
getYScale
不是TrafficChartCanvas
原型的一部分,它位于闭包之内。他们是两个非常不同的东西。
您可以更改创建TrafficChartCanvas
的方式并重新构建代码,如:
TrafficChartCanvas.prototype = {
// (... Other functions ...)
getYScale: function() {
...
}
}
这将函数放入原型中,并允许使用编写并包含在另一个文件中的测试对其进行测试。您不能将函数保存在闭包中,并且可以访问外部测试;你必须走原型路线。
答案 1 :(得分:1)
“TrafficChartCanvas”函数可以安排一种显式导出函数的方法,但没有办法,没有办法做到这一点。