Angular2 测试在模拟服务时失败

2024-01-03

尝试测试具有调用 REST API 的服务依赖项的组件,制作了服务的模拟版本,并使用扩展真实服务的类。

现在,如果我用模拟的提供者覆盖提供者,业力报告者就会出现奇怪的错误,第一个 404 表示 2 个不存在的文件(实际上不应该存在),然后是“{originalErr: {}}”。我的意思是至少告诉我我做错了什么:)

我的测试服:

 describe('App: HeaderComponent', () => {
      it('should get categories on initialization', 
        async(
          inject([TestComponentBuilder], (builder: TestComponentBuilder) => {
            let fixture: ComponentFixture<HeaderComponent>;
            expect(builder).toBeDefined();
            return builder
              .overrideProviders(HeaderComponent, [{provide: CategoryService, useClass: MockCategoryService}])
              .createAsync(HeaderComponent).then((_fixture) => {
                fixture = _fixture;
                let $el = fixture.debugElement;
                let el = $el.nativeElement;
                let component = $el.componentInstance;
                component.ngOnInit();
                fixture.detectChanges();
                expect(el.querySelector('a')).toHaveText('Electric');
              });
          })
        )
      );
    });

Output:

01 08 2016 11:58:29.684:WARN [karma]: No captured browser, open http://localhost:9876/
01 08 2016 11:58:29.713:INFO [karma]: Karma v1.1.2 server started at http://localhost:9876/
01 08 2016 11:58:29.718:INFO [launcher]: Launching browser Chrome with unlimited concurrency
01 08 2016 11:58:29.729:INFO [launcher]: Starting browser Chrome
01 08 2016 11:58:32.277:INFO [Chrome 52.0.2743 (Windows 10 0.0.0)]: Connected on socket /#Semtu7s7yqM-TW0GAAAA with id 14496897
01 08 2016 11:58:35.315:WARN [web-server]: 404: /base/dist/app/shared/services.js
01 08 2016 11:58:35.318:WARN [web-server]: 404: /base/dist/app/shared/services/mocks.js
Chrome 52.0.2743 (Windows 10 0.0.0) ERROR
  {
    "originalErr": {}
  }

如果我删除测试通过的行(但不执行“then(...)”代码块):

overrideProviders(HeaderComponent, [{provide: CategoryService, useClass: MockCategoryService}])


好吧,如果有人遇到同样的问题,事实证明应该导入“ts”文件本身,而不是通过桶。这意味着你应该写这样的东西:

import { CategoryService } from '../../shared/services/category/category.service';
import { MockCategoryService } from '../../shared/services/category/category.service.mock';

代替

import { CategoryService, MockCategoryService } from '../../shared/services/category';

即使导出文件的目录中有index.ts。

很奇怪吧?

Still存在不执行异步操作的问题,不知道为什么

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular2 测试在模拟服务时失败 的相关文章

随机推荐

  • PHP 和 Java 之间的哈希

    我正在尝试在 PHP 中创建一个哈希值 将其存储在数据库中 然后在 Java 中验证该哈希值 到目前为止 它们都彼此独立地工作得很好 Java 可以散列和验证 java Php 可以散列和验证 php 但尽管我尽了最大努力 但它们并不能很好
  • css 将样式应用于除最后一行之外的所有元素

    我有一个产品类别页面 每行 3 个产品 我希望每一行都有一个边框底部except对于最后一行 这应该没有边框底部 最后一行可能包含 1 2 或 3 li 元素 我当前使用的代码将 border bottom 属性应用于每 3 个 li li
  • 从 AppLoading 中看不到启动屏幕

    import React from react import AppLoading from expo app loading export default function App return
  • Google Play Android Developer API 401 权限不足

    我在用着Google Play Android 开发者 API https developers google com android publisher index服务器到服务器检查用户订阅的订阅状态 但在成功授权并请求现有订阅后 我收到
  • php - 如何将 HTML 表数据插入 MySQL

    我有一个带有文本和单选输入的 HTML 表 我想使用 PHP 将每一行插入到我的 MySQL 表中 MySQL 表如下所示 Name Status Ext HTML表格 Name Present Excused Unexcused Ext
  • 按 Enter 键时使用 ajax 发送数据

    我有这样的表格
  • 错误:require.paths 被删除。当运行node.js和socket.io时

    javascript Iv 在运行 github 上的 socket io 示例时遇到错误https github com LearnBoost socket io git https github com LearnBoost socke
  • 制作随机整数数组

    我尝试生成一个随机 int 值数组 其中随机值在最小值和最大值之间取 到目前为止我想出了这段代码 int Min 0 int Max 20 int test2 new int 5 Random randNum new Random fore
  • 刷新关系而不重新加载模型

    我有这样的情况 1 model 模型 where someCondition 在上面的代码之后 我对 model 子关系进行了一些更新 模型具有设置关系 因此我更新它们并将它们保存到数据库中 然后我稍后尝试访问 model gt setti
  • Spring transactionManager 正在回滚,而 testException=[null]!

    为什么事务没有回滚Exception 未保存该对象 我定义了交易参数 例如 Transactional value transactionManager timeout 30 rollbackFor java lang Exception
  • 如何将网站上不存在的链接重定向回主页

    我的问题是如何将我的网站上任何不存在的链接重定向回主页 例如 想象一下 如果用户输入 我的网站上有一个名为 pets 的页面 http mywebsite com pets http mywebsite com petsd http myw
  • 如何制作flutter自定义下拉按钮?

    我要定制DropDownButton https docs flutter io flutter material DropdownButton class html 这样它就不会渲染内容DropdownItem https api flu
  • 如果高度不同,如何使用 Twitter Bootstrap 制作响应式照片网格

    如何使用 Twitter Bootstrap 3 的 img 响应式 图像 但允许它们具有设定的高度 以便照片网格流动 与下图不同 我尝试过设置图像高度属性和最大高度属性 但它似乎会忽略这些属性 除非我用 重要 设置它的高度 但它们看起来很
  • 使用 @FindBy 注解在元素内查找元素。

    例如 WebElement parentEle driver findElement By id xyz WebElement childEle parentEle findElement By id abc childEle click
  • 多次上传php脚本并存储在mysql数据库中

    我是新来的 我需要将多个 mp3 文件上传到一个目录并将它们存储在 mysql 的 音频 表中 我正在使用这个脚本 但它只适用于一个文件 每次只处理一个曲目很烦人 这就是为什么我需要多个上传脚本 我希望只写每首曲目的标题 如下所示 php
  • 如何在 docker-compose.yml 中为命名卷设置主机上的路径

    下面的示例创建dbdata命名卷并在内部引用它db服务 version 2 services db image mysql volumes dbdata var lib mysql volumes dbdata driver local f
  • 调用成员函数指针

    我在调用结构体内部的函数指针时遇到问题 我之前在类之外使用过这种方法 但现在我正在使用指向其他类方法的函数指针在类方法中尝试它 我收到编译器错误 这是我的课程 class Myclass int i void cmd1 int void c
  • 使用 Appbar + Drawer 时遇到问题(Material UI + ReactJS)

    我正在尝试使用 ReactJS Material UI 制作我的第一个应用程序 但没有成功 我唯一想做的就是 当我单击栏上的按钮时 显示左侧抽屉 我有以下代码 App jsx import React from react import M
  • 将提交从一个存储库推送到另一个存储库

    我是否可以将一个提交从一个 Git 存储库推送到一个分支anotherGit 存储库 例如 我有一个承诺aaaa在存储库 A 中提交aaaa位于一个名为 测试 的分支中 我想推动提交aaaa到一个名为 稳定 的分支 该分支位于另一个名为存储
  • Angular2 测试在模拟服务时失败

    尝试测试具有调用 REST API 的服务依赖项的组件 制作了服务的模拟版本 并使用扩展真实服务的类 现在 如果我用模拟的提供者覆盖提供者 业力报告者就会出现奇怪的错误 第一个 404 表示 2 个不存在的文件 实际上不应该存在 然后是 o