久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

4個Angular單元測試編寫的小技巧,快來看看!

Angular怎么進行單元測試?下面本篇給大家整理分享4個Angular單元測試編寫的高階技巧,希望對大家有所幫助!

4個Angular單元測試編寫的小技巧,快來看看!

測試思路:

  • 1.能單元測試,盡量單元測試優先
  • 2.不能單元測試,通過封裝一層進行測試,譬如把測試的封裝到一個組件,但又有弱于集成測試
  • 3.集成測試
  • 4.E2E 測試

測試難度,也是逐漸加大的,耗費的時間也是越多的。那么想測試的簡單,那么在開發的時候,就有意識的,去把思路理清楚,code寫的簡單高效些~。

本文使用的測試技術棧:Angular12 +Jasmine, 雖然其他測試技術語法不同,但是整體思路差不多。【相關教程推薦:《angular教程》】

Tips: Jasmine 測試用例判定,方法有哪些,可以在這里找到,戳我

單元測試

其中component,默認是Angular使用以下語法創建的待測試對象的instance

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

函數測試

1.函數調用,且沒有返回值

function test(index:number ,fn:Function){  if(fn){      fn(index);  } }

請問如何測試?

反例: 直接測試返回值undefined

  const res = component.test(1,() => {}));   expect(res).tobeUndefined();

推薦做法:

 # 利用Jasmine  it('should get correct data when call test',() =>{      const param = {        fn:() => {}     }    spyOn(param,'fn')    component.test(1,param.fn);    expect(param.fn).toHaveBeenCalled();  })

結構指令HostListener測試

結構指令,常用語隱藏、顯示、for循環展示這類功能

 # code  @Directive({ selector: '[ImageURlError]' }) export class ImageUrlErrorDirective implements OnChanges {   constructor(private el: ElementRef) {}      @HostListener('error')   public error() {        this.el.nativeElement.style.display = 'none';   }  }

如何測試?

測試思路:

  • 圖片加載錯誤,才觸發,那么想辦法觸發下錯誤即可
  • 指令一般都依附在組件上使用,在組件image元素上,dispath下errorEvent即可
#1.添加一個自定義組件, 并添加上自定義指令 @Component({   template: `<div>     <image src="https://xxx.ss.png" ImageURlError></image>   </div>` }) class TestHostComponent {  }  #2.把自定義組件視圖實例化,并派發errorEvent beforeEach(waitForAsync(() => {     TestBed.configureTestingModule({         declarations: [             TestHostComponent,             ImageURlError         ]     }); }));  beforeEach(() => {   fixture = TestBed.createComponent(TestHostComponent);   component = fixture.componentInstance;   fixture.detectChanges(); });    it('should allow numbers only', () => {     const event = new ErrorEvent('error', {} as any);     const image = fixture.debugElement.query(By.directive(ImageURlError));     image.nativeElement.dispatchEvent(event); //派發事件即可,此時error()方法就會被執行到 });

善用 public,private,protected 修飾符

angular中public修飾的,spec.ts是可以訪問到;但是 private,protected修飾的,則不可以;

敲黑板

  • 如果打算走單元測試,一個個方法測試,那么請合理使用public — 難度 *
  • 如果不打算一個個方法的進行測試,那么可以通過組織數據,調用入口,把方法通過集成測試 — 難度 ***

測試click 事件

click事件的觸發,有直接js調用click,也有模仿鼠標觸發click事件。

# xx.component.ts @Component({  selecotr: 'dashboard-hero-list' }) class DashBoardHeroComponent {     public cards = [{         click: () => {             .....         }     }] } # html <dashboard-hero-list [cards]="cards"  class="card"> </dashboard-hero-list>`

如何測試?

測試思路:

  • 直接測試組件,不利用Host
  • 利用code返回的包含click事件的對象集合,逐個調用click ,這樣code coverage 會得到提高
it('should get correct data when call click',() => {     const cards = component.cards;     cards?.forEach(card => {         if(card.click){             card.click(new Event('click'));         }     });     expect(cards?.length).toBe(1); });

其余 click 參考思路:

思路一:

  • 利用TestHostComponent,包裹一下需要測試的組件
  • 然后利用 fixture.nativeElement.querySelector('.card')找到組件上綁定click元素;
  • 元素上,觸發dispatchEvent,即可 ,

思路二:

  • 直接測試組件,不利用Host

  • 然后利用 fixture.nativeElement.querySelector('.card'),找到綁定click元素;

  • 使用 triggerEventHandler('click');

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲美女91| 巨乳诱惑日韩免费av| 国产经典一区| 成人午夜在线| 在线视频观看日韩| 伊人久久亚洲| 国产精品.xx视频.xxtv| 久久久久久夜| 午夜久久一区| 综合一区二区三区| 麻豆国产欧美日韩综合精品二区| 免费观看亚洲| 一区二区电影在线观看| 国产精品久久久久久久免费软件| 日韩精品永久网址| 欧美日韩一二三四| 蜜臀久久99精品久久久久宅男| 日韩国产一区二| 国产aa精品| 中文亚洲欧美| 牛牛精品成人免费视频| 不卡在线一区二区| 国产乱人伦精品一区| 亚洲天堂1区| 日韩一区精品| 亚洲成av在线| 日韩av资源网| 色在线视频观看| 日本va欧美va瓶| 欧美天堂视频| 老牛国产精品一区的观看方式| 久久午夜影院| 99视频精品免费观看| 国产精品一区二区三区av麻| 99热精品久久| 国产精品任我爽爆在线播放| 婷婷成人综合| 国产精品资源| 999在线观看精品免费不卡网站| 国产欧美日韩亚洲一区二区三区| 久久精品123| 国产精品亲子伦av一区二区三区| 亚洲欧美视频| 日韩欧美精品| 国产欧美高清视频在线| 久久精品动漫| 久久亚洲黄色| 日韩在线网址| 久久中文视频| 久久精品欧洲| 日韩激情一区二区| 亚洲作爱视频| 亚洲深夜视频| 欧美国产中文高清| 亚洲va久久| 红桃视频国产一区| 国产亚洲一区二区手机在线观看 | 你懂的国产精品永久在线| 91精品成人| 麻豆理论在线观看| 国产欧美69| 亚洲精品伊人| 美女毛片一区二区三区四区 | 国产精品日韩| 日韩在线欧美| 国产精品色在线网站| 日韩视频一区| 亚洲午夜黄色| 激情国产在线| 国产日韩一区二区三区在线播放 | 天使萌一区二区三区免费观看| 日韩精品电影| 精品中文在线| 国产精品任我爽爆在线播放| 日韩激情综合| 日精品一区二区三区| 亚洲欧美网站| 国产精品7m凸凹视频分类| 欧美久久天堂| 成人在线超碰| 久久精品国产一区二区| 国产欧美高清| 日韩精品久久久久久久软件91| 日韩一级精品| 精品1区2区3区4区| 亚洲高清不卡| 久久一区二区三区电影| 特黄特色欧美大片| 久久久久.com| 91精品一区二区三区综合| 国产色播av在线| 国产一区国产二区国产三区| 国产福利资源一区| 国产精久久久| 久久精品理论片| 精品欧美日韩精品| 精品亚洲免a| 久久精品国产福利| 欧美黑人巨大videos精品| 国产精一区二区| 欧美国产专区| 欧美激情国产在线| 秋霞国产精品| 欧美a级一区| 国产偷自视频区视频一区二区| 欧美日韩国产传媒| 在线亚洲激情| 久久亚洲电影| 亚洲婷婷丁香| 亚洲精品欧美| 久久国产精品免费精品3p | 国产专区一区| 一区免费视频| 日日夜夜免费精品| 久久国产免费看| 精品一区二区三区四区五区| 国产传媒av在线| 久久一区二区三区喷水| 免费日韩av| 日韩动漫一区| 精品黄色一级片| 久久精品影视| 狠狠久久婷婷| 日韩有吗在线观看| 欧美黄色一区二区| 精品国产欧美日韩一区二区三区| 四虎国产精品免费观看| 日韩成人综合| 婷婷综合激情| 最新国产精品视频| 麻豆久久久久久久| 91精品在线观看国产| 在线看片日韩| 国产精品一线| 日韩av福利| 视频在线在亚洲| 国产精品久久久久久久久免费高清 | 亚洲18在线| 免费精品一区| 激情久久中文字幕| 日本一区二区三区视频在线看| 久久成人高清| 精品丝袜在线| 亚洲欧美网站在线观看| 国产精品jk白丝蜜臀av小说| 欧洲精品一区二区三区| 免费精品视频| 精品一区二区三区亚洲| 999久久久91| 日韩激情中文字幕| 日韩欧美午夜| 丝袜国产日韩另类美女| 欧美精品国产白浆久久久久| 日韩久久视频| 日本综合视频| 欧美成人a交片免费看| 尤物在线精品| 欧美极品一区二区三区| 国产精品99一区二区| 日本免费在线视频不卡一不卡二| 国产成人精品一区二区三区免费 | 日本免费久久| 四虎国产精品免费久久| 精品久久中文| 日韩中文字幕不卡| 国内一区二区三区| 在线视频日韩| 狠狠久久伊人| 亚洲我射av| 久久天堂av| 国产精品一区二区av日韩在线| 国精品一区二区三区| 国产精品最新| 免费看欧美美女黄的网站| 国产欧美欧美| 久久一二三区| 久久婷婷一区| 欧美a一区二区| 亚洲综合色婷婷在线观看| 国产v综合v| 国产丝袜一区| 亚洲一二av| 成人av二区| 理论片午夜视频在线观看| 日韩成人午夜精品| 欧美精品九九| 伊人网在线播放| 奇米色欧美一区二区三区| 欧美日韩激情在线一区二区三区| 国产伦精品一区二区三区视频| 日韩视频二区| 国产高清不卡| 久久99久久久精品欧美| 蜜臀国产一区二区三区在线播放| 中文在线免费视频| 国产精品色在线网站| 亚洲精品极品| 日韩亚洲国产欧美| 99久久99久久精品国产片果冰 | 欧洲在线一区|