Ionic3 單元測(cè)試Example(給Page增加單元測(cè)試等)

一. Angular單元測(cè)試

https://angular.io/guide/testing

進(jìn)行Ionic單元測(cè)試之前辕狰,可以大概了解下Angular單元測(cè)試永乌。這樣可以幫助我們更好的進(jìn)行Ionic單元測(cè)試镣奋。

二. Ionic test example

  1. 下載地址
https://github.com/ionic-team/ionic-unit-testing-example

2.測(cè)試的名字和位置


image.png

如上圖: 文件的名字約定為 *.spec.ts, 文件的位置放在 page1.ts相同的路徑

3.app.component.ts文件

import { async, TestBed } from '@angular/core/testing';
import { IonicModule, Platform } from 'ionic-angular';

import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

import { MyApp } from './app.component';
import {
  PlatformMock,
  StatusBarMock,
  SplashScreenMock
} from '../../test-config/mocks-ionic';

describe('MyApp Component', () => {
  let fixture;
  let component;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [MyApp],
      imports: [
        IonicModule.forRoot(MyApp)
      ],
      providers: [
        { provide: StatusBar, useClass: StatusBarMock },
        { provide: SplashScreen, useClass: SplashScreenMock },
        { provide: Platform, useClass: PlatformMock }
      ]
    })
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(MyApp);
    component = fixture.componentInstance;
  });

  it('should be created', () => {
    expect(component instanceof MyApp).toBe(true);
  });

  it('should have two pages', () => {
    expect(component.pages.length).toBe(2);
  });

});

expect(component.pages.length).toBe(2);
該測(cè)試用例代表pages個(gè)數(shù)為2時(shí)武氓,測(cè)試pass

  1. page1.spec.ts文件
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By }           from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { Page1 } from './page1';
import { IonicModule, Platform, NavController} from 'ionic-angular/index';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { PlatformMock, StatusBarMock, SplashScreenMock } from '../../../test-config/mocks-ionic';

describe('Page1', () => {
  let de: DebugElement;
  let comp: Page1;
  let fixture: ComponentFixture<Page1>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [Page1],
      imports: [
        IonicModule.forRoot(Page1)
      ],
      providers: [
        NavController,
        { provide: Platform, useClass: PlatformMock},
        { provide: StatusBar, useClass: StatusBarMock },
        { provide: SplashScreen, useClass: SplashScreenMock },
      ]
    });
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(Page1);
    comp = fixture.componentInstance;
    de = fixture.debugElement.query(By.css('h3'));
  });

  it('should create component', () => expect(comp).toBeDefined());

  it('should have expected <h3> text', () => {
    fixture.detectChanges();
    const h3 = de.nativeElement;
    expect(h3.innerText).toMatch(/ionic/i,
      '<h3> should say something about "Ionic"');
  });
});
  1. 運(yùn)行單元測(cè)試
    下載Sample后坛增,運(yùn)行
npm install

安裝建椰。
然后使用下面命令雕欺,進(jìn)行單元測(cè)試

npm run test
  1. 計(jì)算單元測(cè)試覆蓋率
npm run test-coverage

運(yùn)行后,將在工程根路徑下創(chuàng)建coverage文件棉姐,在coverage里屠列,打開index.html,就能夠查看覆蓋率


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伞矩,隨后出現(xiàn)的幾起案子笛洛,更是在濱河造成了極大的恐慌,老刑警劉巖乃坤,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苛让,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡湿诊,警方通過查閱死者的電腦和手機(jī)狱杰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厅须,“玉大人仿畸,你說我怎么就攤上這事±屎停” “怎么了错沽?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)眶拉。 經(jīng)常有香客問我千埃,道長(zhǎng),這世上最難降的妖魔是什么忆植? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任放可,我火速辦了婚禮,結(jié)果婚禮上朝刊,老公的妹妹穿的比我還像新娘吴侦。我一直安慰自己,他們只是感情好坞古,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劫樟,像睡著了一般痪枫。 火紅的嫁衣襯著肌膚如雪织堂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天奶陈,我揣著相機(jī)與錄音易阳,去河邊找鬼。 笑死吃粒,一個(gè)胖子當(dāng)著我的面吹牛潦俺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播徐勃,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼事示,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了僻肖?” 一聲冷哼從身側(cè)響起肖爵,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臀脏,沒想到半個(gè)月后劝堪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揉稚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年秒啦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搀玖。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡余境,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巷怜,到底是詐尸還是另有隱情葛超,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布延塑,位于F島的核電站绣张,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏关带。R本人自食惡果不足惜侥涵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宋雏。 院中可真熱鬧芜飘,春花似錦、人聲如沸磨总。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚪燕。三九已至娶牌,卻和暖如春奔浅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诗良。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工汹桦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鉴裹。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓舞骆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親径荔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子督禽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)猖凛,斷路器赂蠢,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,525評(píng)論 25 707
  • 手機(jī)通訊里自己的電話號(hào)碼叫做“建建的寶貝”,每天下午5點(diǎn)21分辨泳,飛信天氣預(yù)報(bào)都準(zhǔn)時(shí)的發(fā)過來“建建的寶貝”的天氣預(yù)報(bào)...
    獨(dú)孤思齊閱讀 237評(píng)論 0 1
  • 新環(huán)境堅(jiān)持的第二天,又是一個(gè)十二點(diǎn)到家试溯。 當(dāng)十一點(diǎn)走到地鐵站的時(shí)候蔑滓,感覺很疲憊,但地鐵還是很多的人遇绞,突然跟同事感慨...
    Shona_k閱讀 351評(píng)論 0 0
  • 講兩個(gè)故事键袱,故事的當(dāng)事人是身邊的朋友,以下是他們的自述摹闽。 01 小A上周末酒后哭著說蹄咖,累積在心底的委屈終于爆發(fā)出來...
    孤獨(dú)的人晚回家閱讀 542評(píng)論 0 5