【问题标题】:Angular Jasmine How to test if () return; in a functionAngular Jasmine 如何测试 if() 返回;在一个函数中
【发布时间】:2018-08-31 00:07:28
【问题描述】:

我打算测试如下功能:

myFunction(input) {
  if (...) {
    return;
  } else {
    do something
  }
}

如何测试条件是否返回?

it('should', async(() => {
  spyOn(component, 'myFunction')
  // ????
}));

谢谢

【问题讨论】:

  • 如果你问如何测试函数是否运行else 部分,为什么不测试它做了什么(例如,如果它正在调用一个方法,则监视该方法并检查它是否被调用)。
  • 对不起,我可能没有准确地问这个问题。我想测试 if 部分而不是 else 部分
  • 我猜你可以肯定地说 if 部分是通过测试 else 部分是 not 执行的。

标签: angular typescript unit-testing jasmine karma-jasmine


【解决方案1】:

如何测试if()返回;在函数中

您不使用 spy 来确定 a 函数的内部。你监视参数和返回值。您可以使用 spy on 来确定函数是否针对给定输入返回 undefinedreturn; 的隐含值)。

如果您想知道特定行返回是否经过测试,您需要使用覆盖率报告。

【讨论】:

  • 我明白你的意思,但条件只是为了打破非法输入。无论响应如何,总是未定义,因为函数不返回值,除了打破这个函数的条件。
【解决方案2】:

没有实际代码,很难编写代码示例供您使用。如果你想测试if 部分函数的返回,逻辑是这样的:

  1. 处理 if 测试中的变量,使它们的计算结果为真。这可能需要使用间谍,具体取决于 if 测试中的内容。
  2. it 块内有类似expect(component.myFunction()).toBe(undefined); 的东西

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    相关资源
    最近更新 更多