expect(originalEngineInstance).toHaveBeenCalledWith( mockPath, mockOptions, jasmine.any (Function) ); }); 语义: originalEngineInstance 被调用时,传递的第三个参数是任意的函数,即 jasmine.any(Function) 返回的引用 mockOptions, mockCallback ); }); 我们可以通过调试的方式,找到运行时第三个参数,实际是一个定义如下的函数: 而 jasmine.any
在 init 时会让你选择一些配置项: test framework ---- 我这里选择的是jasmine,它是一款JavaScript断言测试库 use Require.js ---- 根据个人情况 根据配置项的选择安装插件 (1) 测试框架选择的是jasmine,安装步骤如下: $ npm install jasmine-core karma-jasmine -D 复制代码 这里要装两个,一个是jasmine 的核心,另一个是karma对jasmine的封装。 结束 按照上述步骤,大家应该可以配置好自己的 karma + jasmine 测试环境,如果遇到问题或者文中有写错的地方,欢迎大家来讨论。文章末尾是需要安装模块的链接,大家可以一键直达。 ---- https://www.npmjs.com/package/karma-jasmine jasmine-core ---- https://www.npmjs.com/package/jasmine-core
个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。
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.
Expector原型链上的compare方法逻辑:首先生成一个matcher实例,然后使用apply的方式动态调用之:
首先创建一个闭包函数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(用于启动 install karma-firefox-launcher --save-dev 安装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:
单元测试代码里定义的imports和providers数据,类型为TestModuleMetadata,已经注入到变量moduleDef里了:
fixture.debugElement的类型:DebugElement__POST_R3__
如下图所示,handler的handleError方法已经被替换成了wrapper:
detectChanges会触发ngZone的run方法,进而调用_tick函数:
class ValueService { getValue() { return 'Jerry'; } } 单元测试代码: describe('MasterService with Angular jasmine.createSpyObj ', () => { let masterService: MasterService; let valueServiceSpy: jasmine.SpyObj<ValueService >; beforeEach(() => { const spy = jasmine.createSpyObj('ValueService', ['getValue']); masterService = TestBed.inject(MasterService); valueServiceSpy = TestBed.inject(ValueService) as jasmine.SpyObj
如何用 Karma,Jasmine,Webpack 测试 UI 组件系列 (一) 配置篇为什么要测试 从个人经验来看,测试是防止软件缺陷的最好方法。 本文介绍如何使用 Karma,Jasmine,Webpack 编写单元测试代码。 Webpack 和 Babel 的安装和配置 Babel和Webpack的根据使用到的ECMAScript新特性决定是否配置,我的配置如下 Jasmine 的断言库的引入 编写测试用例 因为我司在生成中还在使用 参考 Testing AngularJS with Jasmine and Karma (https://scotch.io/tutorials/testing-angularjs-with-jasmine-and-karma-part https://github.com/angular/angular-seed) Angular 官方文档 (https://docs.angularjs.org/guide/unit-testing) Jasmine
扫码关注腾讯云开发者
领取腾讯云代金券