在JS中测试简单的FizzBu​​zz函数

时间:2018-08-23 16:38:57

标签: javascript testing jestjs

我有一个简单的FizzBu​​zz函数,并且必须对其进行测试,花费了整整一整天,无法弄清楚如何正确地实现它。它会引发错误。

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 | });

1 个答案:

答案 0 :(得分:0)

sequenceFizzBuzz()返回一个Generator object。您需要调用next()并获取值。

将测试更改为此:

test('Should to get FizzBuzz or just Fizz or Buzz', () => {
  expect(sequenceFizzBuzz(10, 5).next().value).toBe("FizzBuzz")
});

...它应该可以工作