当前位置: 首页 > 知识库问答 >
问题:

角度测试失败,无法对“XMLHttpRequest”执行“send”

许俊贤
2023-03-14

我正在尝试测试我的角度4.1.0组件-

export class CellComponent implements OnInit {
  lines: Observable<Array<ILine>>;
  @Input() dep: string;
  @Input() embedded: boolean;
  @Input() dashboard: boolean;
  constructor(
    public dataService: CellService,
    private route: ActivatedRoute,
    private router: Router, private store: Store<AppStore>) {
  }
}

然而,一个简单的“应该创建”测试抛出了这个神秘的错误...

NetworkError:未能对“XMLHttpRequest”执行“send”:未能加载“ng:///DynamicTestModule/module.ngfactory.js”。

所以我发现了这个问题,这表明问题是组件有 @Input)_ 参数未设置,但是,如果我像这样修改我的测试:

  it('should create', inject([CellComponent], (cmp: CellComponent) => {
    cmp.dep = '';
    cmp.embedded = false;
    cmp.dashboard = false;
    expect(cmp).toBeTruthy();
  }));

同样,如果我从组件中移除< code>@Input()注释,仍然没有区别。我怎样才能通过这些测试?

共有3个答案

雍飞雨
2023-03-14

对于我的情况,存在模拟数据问题,而在 Array 的情况下,我从模拟中返回字符串

someApi = fixture.debugElement.injector.get(SomeApi);
spyOn(someApi, 'someMethod')
  .and.returnValue(Observable.of('this is not a string but array'));

错误消息确实分散了注意力,并没有告诉实际错误。运行ng测试--source=false指出了正确的错误和行,并帮助我快速修复了它。

很多时候,当您模拟的数据不完整或不正确时,就会发生这种情况。

寇桐
2023-03-14

我在使用angualar cli 6时遇到了同样的问题,我使用了这个标记来获得正确的错误消息:

ng test --source-map=false

也许会对某个人有帮助:)。

柴茂材
2023-03-14

这是新 Angular CLI 的问题。使用 --sourcemaps=false 运行测试,您将获得正确的错误消息

在这里查看详细信息:https://github.com/angular/angular-cli/issues/7296

编辑:

对此的简写是:

ng 测试 -sm=假

从角6开始,命令是:

< code > ng test-source-map = false

 类似资料:
  • 我已经建立了一个cucumberjava硒项目,我想在我的管道中添加重新运行阶段。使用运行器AllTestRunner中的@rerun插件.java我能够创建一个仅失败测试的重新运行.txt并使用maven-surefire-plugin,我创建了一个第二个运行器FailedRunner.java用于自动执行,仅失败的测试。 问题是FailedRunner.java不仅执行失败的测试,还执行All

  • 在使用maven运行单元测试时,我遇到了这个异常。我的所有测试都没有执行。我的测试类的格式是 我正在运行以下命令来运行此命令: 使用的surefire插件是: 有人知道为什么我的测试没有执行吗?我用的是jUnit 4.8.2和surefire 2.14.1

  • 我试图用jenkins execution命令测试我的java项目,但是我得到了以下错误消息: 有关单个测试结果,请参阅/var/jenkins_home/workspace/test1/target/surefire-reports。请参阅转储文件(如果存在)[date].dump,[date]-jvmrun[N].dump和[date].dumpstream。分叉的VM在没有正确地说再见的情况

  • 我按照cypress在他们的文档中推荐的方式编写测试,即每个测试有多个断言,但是用这种方式编写测试时会出现一个问题,那就是如果断言失败,测试执行就会停止。 我希望每个测试有多个断言,如果其中一个失败,测试将失败,但将继续测试执行,所以在最后,我将能够看到测试中失败的所有断言,而不仅仅是第一个失败的断言。 提前感谢!

  • 只有当Jasmine测试失败时才可能做某事吗?与在之后执行的 之后并置,无论结果如何,我正在寻找一种仅在 有一个失败的期望之后执行代码的方法。 这个问题不是特定于Angular的,但在我的场景中,我正在测试一个Angular服务,它使用<code>和$log<code>输出调试消息。我不想为了成功的测试而使控制台杂乱无章,只想显示失败测试的附加信息。 我正在运行Jasmine 2.2.0。 编辑:

  • 我的角应用程序正常运行时工作正常,但在我进行单元测试时似乎执行了两次(使用Karma 它的实例化如下: 浏览器控制台的输出如下: “在浏览器中运行的应用程序” "配置" “运行” 但是单元测试的输出如下: INFO [karma]: Karma v0.12.31 服务器在 http://localhost:9876/ 启动 [..因果报应/幻觉之类的..] 日志:“在浏览器中运行的应用程序” WA