【问题标题】:Testing simple FizzBuzz function inJS在JS中测试简单的FizzBu​​zz函数
【发布时间】:2018-08-28 02:40:11
【问题描述】:

我有一个简单的 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 | });

【问题讨论】:

  • 欢迎来到stackoverflow,为了得到一个好的答案,你必须把你的错误信息和任何其他必要的细节放在这里,以便其他人可以帮助你。
  • 由于函数sequenceFizzBuzz(10, 5),您得到了一个空对象 ({})。您需要正确修复所述功能。
  • 你有一个使用 ES6 生成器的工作解决方案,就像你试图做的那样,在这个 S.O.答案:stackoverflow.com/a/30195668/305953

标签: javascript testing jestjs


【解决方案1】:

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

把你的测试改成这样:

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

...它应该可以工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2012-02-21
    相关资源
    最近更新 更多