angular - Jasmine Angular 测试有时通过有时不通过,具体取决于 Describe 前缀

标签 angular unit-testing jasmine karma-runner

背景 :我正在开发一个 Angular 项目,使用 Jasmine + Karma 运行单元测试。

问题 :
我有一个测试,A。

当我使用 fdescribe在 A 的测试套件上,A 通过,并且跳过所有其他测试。

但是,当我仅使用 describe 运行 A 的测试套件时, 它失败。

此外,我有一个测试 B,失败了。

这已经发生了两次:

我换fdescribedescribe在 A- 没有其他测试 fdescribe .
我把xdescribe在 B 的测试套件上。

  • 我运行了一次测试:测试在到达时完全终止
    测试 B,失败。
  • 我第二次运行测试:相同的行为。
  • 我第三次运行测试:我的测试一直运行,并且
  • A 失败(如上所述)
  • B 报告为已跳过(但打印出相同的错误消息)


  • 我是否错过了 fdescribe 的一些细微差别和 xdescribe ?我在 xdescribe 内的测试仍然(有时)失败,并导致以后的测试无法运行。同时,通过 fdescribe 的测试失败时f已移除。

    如果相关,则两个测试都失败并显示错误:
    "Uncaught SyntaxError: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL thrown".
    当然,最终目标是修复这个错误,但事实证明,当它根据套件前缀不断消失时,这很难做到(当然,弄清楚前缀发生了什么是这个问题的重点)。

    我很高兴包含更多信息,但我不确定首先包含哪些信息会有所帮助。此外,我处于这样一种情况,我真的无法分享有关代码本身的详细信息,如果需要有关此的重要细节,很遗憾,我可能无法提供它们。

    最佳答案

    我遇到了这个完全相同的问题。我发现可能发生了几件事情之一。

  • 一些异步的东西没有被正确处理,因此数据有时被正确设置,而在其他时候则不是。
  • 如果您正在使用本地存储,则异步数据可能存在相同的问题。
  • 测试没有正确隔离,并且在一个测试中发生了一些变化,然后会影响以后的测试。单独运行测试可以消除这种情况。
  • 关于angular - Jasmine Angular 测试有时通过有时不通过,具体取决于 Describe 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59429331/

    相关文章:

    Angular 5 - 组件和服务之间的通信

    c - 使用 Check for C 单元测试时出现的问题

    angularjs - Angular.mock.$interval.flush() 抛出奇怪的异常

    angularjs - 需要一些 Jasmine 中 "callThrough"和 "callFake()"的实际示例

    ruby-on-rails-3 - Jasmine 设置错误 rails 3.1 ActiveSupport::Concern (NameError)

    部署在 Tomcat 上的 Angular 4 项目

    javascript - 模型更改后 Angular View 不更新

    angular - NGRX/数据实体 getAll 将旧数据与新数据连接而不是更新

    c# - 使用本地线程的单元测试方法

    c# - 使用 Moq 获取 UnitTest 中调用方法的返回值