我是JavaScript的新手,我试图理解为什么Jasmine-Node告诉我stringCalc
在明确定义时没有方法add
。是否添加没有附加到对象,或者是否存在我需要生产文件的东西?
代码:
var stringCalc = (function() {
return {
add: function(string) {
return 0;
}
};
})();
规格:
var stringCalc = require("../lib/calc");
describe("String Calculator", function() {
it("should return zero if empty", function() {
expect(stringCalc.add("")).toEqual(0);
});
});
答案 0 :(得分:0)
在spec文件中,stringCalc变量被重新定义,以保存从calc.js文件中导出的任何内容。您的代码模块(calc文件)不会导出任何内容,因此您需要它的东西没有添加方法。您可以通过在测试文件中记录require语句的结果来查看:
var stringCalc = require("./calc");
console.log(stringCalc);
将其写入控制台:
{}
要使您的代码模块可用,您必须导出它们。有几种方法可以做到这一点,例如:
exports.add = function(string) {
return 0;
}
使用该代码,测试在您编写时通过。如果你想将它包装在一个自动执行的函数中,以免弄乱全局范围,你只需要包装整个事物:
(function() {
// private code here; this stuff is not exported
var s = 'foo';
var helperFunction = function() {
// ...
}
exports.add = function(string) {
return 0;
}
})();