expect(originalEngineInstance).toHaveBeenCalledWith( mockPath, mockOptions, jasmine.any...(Function) ); }); 语义: originalEngineInstance 被调用时,传递的第三个参数是任意的函数,即 jasmine.any(Function) 返回的引用...mockOptions, mockCallback ); }); 我们可以通过调试的方式,找到运行时第三个参数,实际是一个定义如下的函数: 而 jasmine.any
安装 karma $ npm install karma -D 复制代码 这里安装到项目路径下就可以了(-D 是 --save-dev 的简写)。 3. 初始化 $ ....根据配置项的选择安装插件 (1) 测试框架选择的是jasmine,安装步骤如下: $ npm install jasmine-core karma-jasmine -D 复制代码 这里要装两个,一个是jasmine...(2) 浏览器选择的是PhantomJS,安装步骤如下: $ npm install karma-phantomjs-launcher -D 复制代码 (3) 如果涉及到对以ES6编写的代码进行测试,就要安装...结束 按照上述步骤,大家应该可以配置好自己的 karma + jasmine 测试环境,如果遇到问题或者文中有写错的地方,欢迎大家来讨论。文章末尾是需要安装模块的链接,大家可以一键直达。...---- https://www.npmjs.com/package/karma-jasmine jasmine-core ---- https://www.npmjs.com/package/jasmine-core
安装 karma $ npm install karma -D 这里安装到项目路径下就可以了(-D 是 --save-dev 的简写)。 3. 初始化 $ ....以后就可以在任何路径执行 karma start 并且运行的 karma 都是在当前项目下安装的版本。...根据配置项的选择安装插件 (1) 测试框架选择的是jasmine,安装步骤如下: $ npm install jasmine-core karma-jasmine -D 这里要装两个,一个是jasmine...的核心,另一个是karma对jasmine的封装。...(2) 浏览器选择的是PhantomJS,安装步骤如下: $ npm install karma-phantomjs-launcher -D (3) 如果涉及到对以ES6编写的代码进行测试,就要安装Babel
env在jasmine.js里实现: ? SpyRegistry注册表? 把Component的原始方法Component.next放置到originalMethod变量里。 ?
Jasmine provides a few more tools when dealing with promises....these two promises with the help of $provide to create fake implementations of our dependencies and jasmine...service to retrieve the store list", function() { var user = { address: {street: 1}}; // Jasmine...spyOn(StoreService, 'listStores').and.callThrough(); // Jasmine spy also allows to call Fake
现在准备执行下面这段代码了: 准备调用被 mock 过的 engine 函数: 即下图 1 的函数: 只要 spy 被调用,其调用时传入的参数,必定可以被记录: 看这段代码: jasmine.objectContaining...的适用场合: jasmine.objectContaining 用于那些期望只关心实际中的某些键/值对的时候。...把这段代码改造一下: it(`should pass setup options to the original engine`, () => { const jerry = jasmine.arrayContaining...({ bootstrap: 'TestModule', providers: jerry }) ); }); jasmine.objectContaining...返回的类型为:jasmine.ArrayContaining ArrayContaining 类型定义如下: 单步调试: 返回的是一个新的 matcher?
语义:希望service.findFirstFocusable方法被监控,同时其调用之后,返回el变量。
Expectation An expectation in Jasmine is an assertion that is either true or false.
源代码: it('should be created', async(() => { expect(component).toBeTruthy(); ...
首先创建一个闭包函数this.plan,存储传入的期望返回值。this.plan是SpyStrategy的一部分。
依赖管理工具使用简单的命令即可提供 依赖的查找、安装、卸载等操作,深受广大程序员喜爱。...Karma 环境的搭建 安装 karma (karma用于run自动化测试脚本) npm install karma --save-dev 安装karma-jasmine (jasmine用于编写单元测试用例...) npm install karma-jasmine --save-dev npm install jasmine-core --save-dev 安装karma-chrome-launcher(用于启动...coverage(测试代码覆盖率) npm install karma-coverage --save-dev Jasmine jasmine有四种类型的函数: 1....的详细信息 github地址: https://github.com/jasmine/jasmine guide地址: https://jasmine.github.io/2.0/introduction.html
checkoutConfigService会调用getPreferredDeliveryMode, 输入的参数值为deliveryModes:
Expector原型链上的compare方法逻辑:首先生成一个matcher实例,然后使用apply的方式动态调用之:
before each首先被调用: 第二次被调用: 执行第二个spec,test为1: 又执行beforeEach, component被重置: 执行下一个sp...
单元测试代码里定义的imports和providers数据,类型为TestModuleMetadata,已经注入到变量moduleDef里了:
fixture.debugElement的类型:DebugElement__POST_R3__
都已经是被spy之后的方法了: CallTracker.track就是把调用上下文放到一个calls数组里: delegate给strategy: 真正的执行体...
class ValueService { getValue() { return 'Jerry'; } } 单元测试代码: describe('MasterService with Angular jasmine.createSpyObj...', () => { let masterService: MasterService; let valueServiceSpy: jasmine.SpyObj; beforeEach(() => { const spy = jasmine.createSpyObj('ValueService', ['getValue']);...masterService = TestBed.inject(MasterService); valueServiceSpy = TestBed.inject(ValueService) as jasmine.SpyObj
detectChanges会触发ngZone的run方法,进而调用_tick函数:
如下图所示,handler的handleError方法已经被替换成了wrapper:
领取专属 10元无门槛券
手把手带您无忧上云