function getWordLengths(str) {
return str.split(' ').map(words => words.length)
}
我的错误是
AssertionError: expected [ 0 ] to deeply equal []
+ expected - actual
-[
- 0
-]
+[]
t('returns [] when passed an empty string', () => {
expect(getWordLengths('')).to.eql([]);
});
it('returns an array containing the length of a single word', () => {
expect(getWordLengths('woooo')).to.eql([5]);
});
it('returns the lengths when passed multiple words', () => {
expect(getWordLengths('hello world')).to.eql([5, 5]);
});
答案 0 :(得分:0)
it("returns [] when passed an empty string", () => { expect(getWordLengths("")).to.eql([0]); });
.to.eql([0])不是([])
答案 1 :(得分:0)
您可以使用以下内容:
function getWordLengths(str) {
return str.length > 0 ? str.split(' ').map(words => words.length) : [];
}
console.log( getWordLengths(""));
console.log( getWordLengths("Hi") );
console.log( getWordLengths("Hi there how are you") );
答案 2 :(得分:0)
str.split(' ')
返回一个包含1个项目的数组,其长度为0。
"str".split(' ') // ==> [""].map(words => words.length) // ==> [0]
这就是为什么您的测试用例似乎失败了的原因。 str
为空时,您将不得不调整测试用例或返回一个空数组。
expect(getWordLengths('')).to.eql([]);
到
expect(getWordLengths('')).to.eql([0]);
直接比较对象时,误报也有可能蔓延。由于每个对象都指向不同的引用。
[] === []
或{} === {}
将返回false
(我很确定测试库将对此进行解释,因为它们递归检查每个字段而不是对象引用)。我宁愿在测试案例中更加明确。
t('returns [0] when passed an empty string', () => {
const computedArray = getWordLengths('');
expect(computedArray.length).to.eql(1);
expect(computedArray[1]).to.eql(0);
});