首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular 2在Karma Jasmine测试中实例化parent中的全局注入器

在Angular中,全局注入器(Global Injector)通常是通过Injector类来创建和管理的。在Karma Jasmine测试中,如果你想要实例化父组件中的全局注入器,并在测试中使用它,你可以按照以下步骤进行:

步骤 1: 创建一个全局注入器

首先,在你的应用中创建一个全局注入器。这通常在应用的根模块或根组件中完成。

代码语言:javascript
复制
// app.module.ts 或者 app.component.ts
import { Injector } from '@angular/core';

export let globalInjector: Injector;

@NgModule({
  // ...
})
export class AppModule {
  constructor(private injector: Injector) {
    globalInjector = this.injector;
  }
}

步骤 2: 在测试中使用全局注入器

在你的Karma Jasmine测试文件中,你可以导入这个全局注入器,并使用它来获取服务实例。

代码语言:javascript
复制
import { TestBed } from '@angular/core/testing';
import { MyService } from './my.service';
import { globalInjector } from './app.module'; // 或者 app.component.ts

describe('MyService', () => {
  let myService: MyService;

  beforeEach(() => {
    // 使用全局注入器获取服务实例
    myService = globalInjector.get(MyService);
  });

  it('should be created', () => {
    expect(myService).toBeTruthy();
  });

  // ... 其他测试
});

注意事项

  • 确保globalInjector在应用的根模块或根组件中被正确设置。
  • 如果你的服务依赖于其他服务,确保这些依赖项也在全局注入器中可用。
  • 在测试中使用全局注入器时,要注意服务的生命周期和依赖注入的正确性。

示例代码

假设你有一个简单的服务MyService,它依赖于另一个服务AnotherService

代码语言:javascript
复制
// my.service.ts
import { Injectable } from '@angular/core';
import { AnotherService } from './another.service';

@Injectable({
  providedIn: 'root'
})
export class MyService {
  constructor(private anotherService: AnotherService) {}

  doSomething() {
    return this.anotherService.doAnotherThing();
  }
}

在测试中,你可以这样使用全局注入器:

代码语言:javascript
复制
import { TestBed } from '@angular/core/testing';
import { MyService } from './my.service';
import { AnotherService } from './another.service';
import { globalInjector } from './app.module';

describe('MyService', () => {
  let myService: MyService;

  beforeEach(() => {
    // 使用全局注入器获取服务实例
    myService = globalInjector.get(MyService);
    spyOn(globalInjector.get(AnotherService), 'doAnotherThing').and.returnValue('mocked result');
  });

  it('should call doAnotherThing on AnotherService', () => {
    const result = myService.doSomething();
    expect(result).toBe('mocked result');
  });
});

这样,你就可以在Karma Jasmine测试中使用父组件中的全局注入器了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

angular面试问题_kafka面试题

jasmine是一套通用测试框架,除了Angular之外,也有广泛引用;KarmaAngular专用用于管理测试配置等框架,让测试代码方便指定浏览执行;另外,根据喜好,也可以选择 Mocha...端到端测试(e2e):基于protractor。protractor是Angular专用e2e框架。 什么是KarmaAngular中有什么作用?...Karma是用于浏览环境针对测试代码执行源代码工具。 它支持在为其配置每个浏览运行测试。 同时将结果显示命令行和浏览上,或者输入标准格式报表,供开发人员检查哪些测试通过或失败。...Angular项目的根目录下,我们具有用于配置Karma文件karma.conf。 什么是JasmineAngular中有什么用?...Angular UT最佳实践 beforeEach() 初始使用到上下文; describe(),it() 描述要清晰。

2.3K20

搭建 karma + jasmine 测试环境

在前端开发过程,我们会写很多功能函数,这样就会涉及到对这些功能函数进行单元测试,而karma就是一个很好用可以浏览环境中进行测试集成工具。 1....什么是 karma karma 是由Angular团队开发一款测试工具,帮助开发者更好更快速地多种环境下执行测试代码,拿到测试结果。...在运行时候,它会自动启动配置好浏览,同时也会启动一个 node 服务,然后启动好浏览执行测试代码,并将测试代码执行结果传回给 node 服务,然后 node 服务在打印出收到执行结果...2. 安装 karma $ npm install karma -D 复制代码 这里安装到项目路径下就可以了(-D 是 --save-dev 简写)。 3. 初始 $ ....(2) 浏览选择是PhantomJS,安装步骤如下: $ npm install karma-phantomjs-launcher -D 复制代码 (3) 如果涉及到对以ES6编写代码进行测试,就要安装

1.7K20
  • 搭建 karma + jasmine 测试环境

    在前端开发过程,我们会写很多功能函数,这样就会涉及到对这些功能函数进行单元测试,而karma就是一个很好用可以浏览环境中进行测试集成工具。 1....什么是 karma karma 是由Angular团队开发一款测试工具,帮助开发者更好更快速地多种环境下执行测试代码,拿到测试结果。...在运行时候,它会自动启动配置好浏览,同时也会启动一个 node 服务,然后启动好浏览执行测试代码,并将测试代码执行结果传回给 node 服务,然后 node 服务在打印出收到执行结果...2. 安装 karma $ npm install karma -D 这里安装到项目路径下就可以了(-D 是 --save-dev 简写)。 3. 初始 $ ..../node-modules/.bin/karma init 这里如果不想每次都执行本地路径下 karma 命令,可以全局安装 karma-cli $ npm install karma-cli -g

    14610

    如何用 KarmaJasmine,Webpack 测试 UI 组件系列(一)配置篇

    如何用 Karma,Jasmine,Webpack 测试 UI 组件系列 (一) 配置篇为什么要测试 从个人经验来看,测试是防止软件缺陷最好方法。...生产开发当我们修改一小段代码,大部分开发人员会手动打开他们浏览 或 POSTMAN来验证它是否仍然正确。 这种方法(手工测试)不仅低效,而且会隐藏一些你未发现缺陷。...一旦所有的测试通过,这些零散单元组合在一起也会运行很好,因为这些单元行为已经被独立验证过了。 本文介绍如何使用 Karma,Jasmine,Webpack 编写单元测试代码。...Webpack 和 Babel 安装和配置 Babel和Webpack根据使用到ECMAScript新特性决定是否配置,我配置如下 Jasmine 断言库引入 编写测试用例 因为我司在生成还在使用...Angular 1.X 版本,所以测试用例编写也以此为例,需要安装angular angular-mocks。

    2.1K150

    Angular2 之 单元测试

    组件测试 单独service测试 Angular测试工具 Angular测试工具类包含了TestBed类和一些辅助函数方法,当时这不是唯一,你可以不依赖Angular DI(依赖注入)系统,...它By.css静态方法产生标准CSS选择 predicate,与JQuery选择相同方式过滤。 detectChanges:测试Angular变化检测。...Angular注入系统是层次。 可以有很多层注入,从根TestBed创建注入下来贯穿整个组件树。 最安全并总是有效获取注入服务方法,是从被测试组件注入获取。...组件注入是fixtureDebugElement属性。 出人意料是,请不要引用测试代码里提供给测试模块userServiceStub对象。它是行不通!...被注入组件userService实例是彻底不一样对象,是提供userServiceStub 克隆。 TestBed.get方法从根注入获取服务。

    5.5K20

    25个超有用 AngularJS Web 开发工具

    1)AngulaJS最佳测试工具——Protractor Protractor支持AngularJS应用程序,是一款终端到终端测试框架。Protractor真正浏览运行测试。...官方网站:http://angular.github.io/protractor/ 2)AngularJS测试框架——Jasmine Jasmine对于JavaScript用户而言,也是一款测试框架。...官方网站:https://github.com/jasmine/jasmine 3)支持AngularJSIDE——Webstorm WebStorm智能代码编辑为JavaScript、Node.js...官方网站:https://www.firebase.com/docs/web/libraries/angular/index.html 5)AngularJs测试工具——karma karma也是一款非常盛行测试框架...Mocha测试运行持续,映射未捕获异常到正确测试案例同时,允许灵活和准确报告。 ?

    3.7K50

    前端自动测试工具 overview

    两者功能覆盖范围粗略可以表示为: Jasmine(2.x) === Mocha + Chai + Sinon - mockserver PS: 个人实际使用后觉得Chai和Sinon毕竟是专门做特定功能框架...,可以让你在node对真实浏览dom进行操作和测试,不同就是Phantomjs基于webkit(chrome),而Slimer则基于 Gecko(firefox)。...当我们有需要在真实浏览环境测试时可以考虑这两个框架 测试任务管理工具 Karma ?...Karma 是 Google Angular 团队开源 JavaScript测试执行过程管理工具,其提供了强大自动测试功能,其主要提供能力如下: 提供真实环境,可以配置 各种chrome, firefox...等各种浏览环境或者 Phantomjs等无头浏览环境 可控制自动测试流程,比如编辑保存时自动全部全部测试用例 强大适配器,可以karma上面配置jasmine,mocha等单元测试框架。

    2.3K110

    前端自动测试工具 overview

    两者功能覆盖范围粗略可以表示为: Jasmine(2.x) === Mocha + Chai + Sinon - mockserver PS: 个人实际使用后觉得Chai和Sinon毕竟是专门做特定功能框架...,可以让你在node对真实浏览dom进行操作和测试,不同就是Phantomjs基于webkit(chrome),而Slimer则基于 Gecko(firefox)。...当我们有需要在真实浏览环境测试时可以考虑这两个框架 测试任务管理工具 Karma ?...Karma 是 Google Angular 团队开源 JavaScript测试执行过程管理工具,其提供了强大自动测试功能,其主要提供能力如下: 提供真实环境,可以配置 各种chrome, firefox...等各种浏览环境或者 Phantomjs等无头浏览环境 可控制自动测试流程,比如编辑保存时自动全部全部测试用例 强大适配器,可以karma上面配置jasmine,mocha等单元测试框架。

    1.4K10

    写代码无BUG,网易云前端单元测试方案总结

    AMD 需要全局引入 RequireJS,对单元测试而言比较典型问题是初始 karma 时会询问是否使用 RequireJS ,不过一般现在很少有人使用了。...html才能完成测试,手动做工程效率比较低,所以需要借助工具来实现这个任务,这个工具就是 Karma。...Karma 本质上就是本地启动一个web服务,然后再启动一个外部浏览加载一个引导脚本,这个脚本将我们所有的源文件和测试文件加载到浏览,最终就会在浏览端执行我们测试用例代码。... frameworks 作用是全局注入一些依赖,这里配置就是将 Mocha 和 chai 提供测试相关工具暴露在全局上供代码里使用。...并且打开了本地浏览 ? karma browser 可以看到现在已经真实浏览运行测试程序了。 因为图形测试对 CI 机器不友好,所以可以选择 puppeteer 代替 Chrome。

    9.6K20

    Twitter工程师聊JS

    Javascript 不是一个单一语言,每个浏览有自己JS引擎,不同浏览和版本之间产生了不少差异 兼容性问题比较麻烦,http://caniuse.com 这个网站给出了各个API不同浏览支持情况...和 sourcemaps hot reloading 当文件内容变化时,浏览动态更新文件 sourcemaps 使debug更加容易,使bundle回到原始形式 Grunt、gulp、broccoli...JS测试越来越重要,JS本身没有测试框架,需要依赖外置库 Mocha和Jasmine是两个主流库,你来定义预期行为,然后进行断言 对于运行测试,Mocha提供了命令行工具,而Jasmine没有,很多开发者使用...Karma,他是一个test runner,Mocha和Jasmine测试都可以使用Karma运行 我个人建议是 Karma + Jasmine,如果需要用到浏览测试时,使用PhantomJS...PhantomJS 是一个没有界面的浏览,常用来配合自动测试 还有一些其他有用测试工具: Selenium 可以浏览中进行真实集成测试 Sinon 对于AJAX请求类型测试很有帮助

    1.4K60

    Vue自动测试

    Vue脚手架当中,Karma和NightWatch分别对应着单元测试和e2e测试。单元测试更多是面向JS功能逻辑检验,而NightWatch更多是面对业务逻辑检验。...it是对它需要完成某些功能描述,它里面是具体测试用例。测试框架,describe,it, expect和sinon都是全局方法。...它其实即是将组件实例过程进行封装,帮你模拟它组件实例过程。shallow这个函数把组件List实例,并传入props等参数,这样,你可以断言数据绑定结果。.../example.vue') 在对应spec.js添加了需要注入对象。../service是组件依赖对象,它结果会被替换。...执行测试 default e2e test类似单元测试describe和it测试描述,browser则是传入浏览对象,这个对象可以是chrome,也可以是firefox,由selenium控制

    1.9K50

    如何管理云原生应用程序依赖关系

    NPM 应用程序依赖关系是仓库 package.json 文件定义。...": "^8.0.0", "@angular/language-service": "^8.0.0", "@types/jasmine": "~2.8.8", "@types/jasminewd2..."~2.2.0", "karma-coverage-istanbul-reporter": "~2.0.1", "karma-jasmine": "~1.1.2", "karma-jasmine-html-reporter...它提供功能包括:完全自动地拉取请求创建和合并,基于软件包流行度和测试数据依赖关系选择,支持多个软件包管理,包括 npm、yarn、composer,以及为每个仓库定制更新规则。...结   语 云原生世界,一个典型环境是由各种各样依赖关系支持。全面地测试这些依赖关系对任何云原生应用成功都至关重要。然而,手动更新所有的依赖关系可能很困难,也很耗时。

    1.7K10

    karma基础应用之与fis结合

    一、介绍 1. karma是单元测试运行框架,可以集成jasmine断言库,也支持babel。 2.fis是百度前端团队开源推出前端工程管理工具。...二、karma基础应用 1.karma基础api: server:创建一个测试服务 【可以是远程计算机】 runner.run:运行完单元测试后,立即停止服务 stopper.stop:停止下在运行测试服务...1.由于fis工程有多个注入口,对于单元测试暂定放在打包之前(prepackager),其他注入口可以参考fis之官网。...2.node_moudles下创建fis-prepackager-karma文件夹(fis所有的插件都是一个npm包) 3.fis-prepackager-karma文件夹创建一个index.js...文件,然后添加对karma调用 4.fis-conf.js作如下配置: fis.match('::package',{ 'prepackager':fis.plugin('karma') }

    81760

    技术前沿:AI大模型自动测试应用实例

    今天咱们来聊一聊如何用AI大模型(比如GPT-3.5)来做自动测试,别看这东西听起来高大上,但也没那么神,跟着我咱们一步一步来,保证你也能轻松搞定,学会了保准让你在工作老省事儿了。...prompt = "生成用户登录测试用例,只包含正常情况和异常情况,只生成 2 条用例" 就这么一句话,告诉大模型咱要求。简单明了,不拖泥带水。...09 返回用例,准备战斗 最后咱得把解析后测试用例给拿出来,好让咱别的地方用。就跟从超市买完东西得带回家似的。咱得把这些用例准备好,随时可以进行自动测试。...运行后,你能得到大模型生成用户登录测试用例,而且还能把这些测试用例给解析得明明白白,方便你自动测试中使用。真的老好使了!...保证让你成为自动测试高手,在工作中大放异彩。

    6310

    每日前端夜话(0x04):2018年JavaScript状态调查(

    结论 在过去美好时光里,事情总是很简单。 数据存储在数据库,服务可以在其中获取数据,将其放入模板,然后将整个数据发送到客户端。 但事情并不那么简单。...GitHub 14k stars 适用于浏览和node.js简单JavaScript测试框架 Jasmine 随时间流行度 ? Jasmine 最受喜欢方面 ?...比率较高国家和地区显示为红色,较低国家/地区显示为蓝色(调查受访者总数少于20国家和地区将被省略)。 ? Karma ? GitHub 10k stars 惊人JavaScript测试。...“单页应用程序”时代,Web应用程序变得越来越复杂,客户端实现越来越多逻辑。调查显示,开发人员使用许多工具来测试他们应用程序。...测试未来可能包括更多在浏览中进行自动测试解决方案,像Cypress这样项目可能会包含在明年调查,我们可能会看到更多基于Puppeteer工具。

    1.6K20

    【UTP自动测试平台系列之终章】前端探索之路

    Jquery是和DOM选择绑在一起,开发随处可以对显示文字、样式和排版进行修改,让前端开发人员开发、定位问题都特别难,使得代码难以维护。...用 Angular 扩展语法编写 HTML模板 用组件类管理这些模板 用服务添加应用逻辑 用模块打包发布组件与服务 通过引导根模块来启动该应用 Angular 浏览接管、展现应用内容,并根据我们提供操作指令响应用户交互...5.3 单元测试引入:Karma+Jasmine+Istanbul 一般开发人员都是比较喜欢架构开发、功能迭代,而不会花很多时间和精力单元测试上,但是随着模块增多,迭代速度增快,变得开发功能非常不可控...对于Angular单元测试,可以利用KarmaJasmine进行ng模块单元测试,并可用Istanbul来生成代码覆盖率测试报告,是非常实用工具。 ?...(1)下载angular-mocks:npm install ng2-mock-server --save-dev。 (2)定义需要模拟接口: ? (3)模块引入mock技术: ?

    2.5K110

    常用前端自动测试工具介绍 —— Karma

    开发过程,除了代码本身,测试也是重要一环。...在前端开发,我们可以选用 Karma 进行代码单元测试,这个工具十分强大,它集成了像 Jasmine(基于 BDD 测试框架),PhantomJS(无界面的浏览) 这些测试套件。...karma-phantomjs-launcher -D 接下来对我们工程进行初始karma init 之后会弹出一些选项,其中包含了一些初始配置工作,使用上下方向键可以配置项之间进行切换...我这里选择使用 Jasmine 测试框架,使用 PhantomJS 无界面浏览,整体配置选项如下: myKarmDemo karma init Which testing framework do...使用 PhantomJS 好处在于其是一个无界面的浏览运行环境,可以跑命令行环境某些没有 Chrome 等浏览服务环境下比较好用,方便代码验收和集成。

    1.6K10
    领券