我有一个简单的FizzBuzz函数,并且必须对其进行测试,花费了整整一整天,无法弄清楚如何正确地实现它。它会引发错误。
function* sequenceFizzBuzz(start, step) {
start = start || 0;
step = step || 1;
if ((start + step) % 3 === 0) {
if ((start + step) % 5 === 0) {
yield "FizzBuzz"
}
yield 'Buzz'
} else if ((start + step) % 5 === 0) {
yield 'Fizz'
} else {
yield start += step;
}
}
test('Should to get FizzBuzz or just Fizz or Buzz', () => {
expect(sequenceFizzBuzz(10, 5)).toBe("FizzBuzz")
});
收到此错误: 比较两种不同类型的值。预期的字符串,但接收到对象。
20 |
21 | test('Should to get FizzBuzz or just Fizz or Buzz', () => {
> 22 | expect(sequenceFizzBuzz(10, 5)).toBe("FizzBuzz")
| ^
23 | });
答案 0 :(得分:0)
sequenceFizzBuzz()
返回一个Generator object。您需要调用next()
并获取值。
将测试更改为此:
test('Should to get FizzBuzz or just Fizz or Buzz', () => {
expect(sequenceFizzBuzz(10, 5).next().value).toBe("FizzBuzz")
});
...它应该可以工作