我试图通过exercism.io上的一些练习来学习javascript(它提供了我们需要通过的预先编写的测试)。一段时间没关系,但是通过这个最新的练习,我似乎无法弄清楚测试是如何工作的。
练习的目的是编写一个程序,该程序将计算给定字符串在另一个字符串中出现的次数。这是测试文件的外观:
var words = require('./word-count');
describe("words()", function() {
it("counts one word", function() {
var expectedCounts = { word: 1 };
expect(words("word")).toEqual(expectedCounts);
});
// more skipped tests
});
我做的第一件事是创建word-count.js
文件,但我不知道该文件中的代码需要如何格式化/设置以供spec文件读取。浏览this tutorial后,我设置了word-count.js
,如下所示:
exports = function(str){}
然而,这(以及我尝试的其他所有内容)给了我错误
1) words() counts one word
Message:
TypeError: object is not a function
Stacktrace:
TypeError: object is not a function
at null.<anonymous> (/home/sheeka/exercism/javascript/word-count/word-count_test.spec.js:6:12)
我不明白这个错误,或者它正在寻找什么。我也不明白测试是如何工作的,因为它不会让我看起来像spec文件正在调用来自word-count.js
的任何函数或变量
任何帮助理解这一点或指向我可以用来解决这个问题的资源的方向将非常感激。我确实试过运行谷歌搜索,但我发现的所有东西看起来都太高级了。
答案 0 :(得分:0)
指定exports = function(str){}
不要公开你的功能。请尝试module.exports = function(str){}
。
或者,您可以将函数指定为exports prop exports.fc = function() {...};
默认情况下,exports
是一个空对象,指向module.exports
。覆盖exports
时,module.exports保持不变。