gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

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

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

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

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

測試思路:

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

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

本文使用的測試技術棧:Angular12 +Jasmine, 雖然其他測試技術語法不同,但是整體思路差不多?!鞠嚓P教程推薦:《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號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日本人69视频| 国产又粗又长又爽又黄的视频| 日本黄色片一级片| 国产无套内射久久久国产| 欧美a级黄色大片| 亚欧美一区二区三区| 成人黄色一区二区| 欧美丰满熟妇bbbbbb百度| 妺妺窝人体色www看人体| 成年在线观看视频| 免费极品av一视觉盛宴| 国产树林野战在线播放| 最新av网址在线观看| 四虎4hu永久免费入口| 熟女视频一区二区三区| 国产又大又长又粗又黄| 在线观看中文av| 激情五月宗合网| 午夜免费看毛片| 17c丨国产丨精品视频| av免费观看大全| 污污动漫在线观看| 乱妇乱女熟妇熟女网站| 制服丝袜中文字幕第一页 | 欧美丰满熟妇bbbbbb百度| 97超碰青青草| 久久这里只有精品8| 制服丝袜综合网| 我的公把我弄高潮了视频| 亚洲激情在线看| 国产精品久久久久9999小说| 五月天丁香花婷婷| 欧美精品一区二区三区免费播放| 欧美男女交配视频| av网站在线不卡| 五月婷婷深爱五月| 日韩免费高清在线| 999在线免费视频| 欧美激情国产精品日韩| 亚洲五码在线观看视频| 中文字幕 欧美日韩| a级黄色片网站| 日本a级片在线观看| 九九久久九九久久| 97视频在线免费| 成人在线看视频| 久久国产精品国产精品| 北条麻妃69av| 国产卡一卡二在线| 91精品91久久久中77777老牛| 成年人视频在线免费| av在线网址导航| 国产精品一线二线三线| 一级片免费在线观看视频| 九一国产精品视频| 人妻内射一区二区在线视频| 人妻激情另类乱人伦人妻| 尤蜜粉嫩av国产一区二区三区| 欧美性久久久久| 国产嫩草在线观看| 国产真实老熟女无套内射| www.男人天堂网| 国产aⅴ爽av久久久久| www.国产二区| 小说区视频区图片区| wwwwxxxx日韩| 50路60路老熟妇啪啪| 国产精品沙发午睡系列| 中文字幕一区二区在线观看视频 | 欧美在线一区视频| 黄色一级片网址| the porn av| 99re6在线观看| 中文字幕第一页在线视频| 浴室偷拍美女洗澡456在线| 欧美日韩一区二区在线免费观看| 天天色天天干天天色| 污版视频在线观看| 2022中文字幕| 日批视频在线免费看| 欧美精品色婷婷五月综合| 日本黄网站免费| 日本人69视频| 国产手机视频在线观看| 国内自拍中文字幕| 亚洲色精品三区二区一区| 丁香婷婷激情网| 久久免费看毛片| 18禁免费观看网站| 丰满人妻一区二区三区53号| 超碰10000| 亚洲这里只有精品| 霍思燕三级露全乳照| 日本人视频jizz页码69| 91欧美一区二区三区| 性欧美大战久久久久久久| 色www免费视频| 国产天堂视频在线观看| 一起操在线视频| 看av免费毛片手机播放| 大地资源第二页在线观看高清版| 国产精品免费看久久久无码| 91精品国产吴梦梦| 亚洲欧美日韩网站| 国产系列第一页| 免费cad大片在线观看| 国产精品入口免费软件| 在线观看免费不卡av| 国产精品wwwww| 亚洲乱码国产一区三区| 怡红院av亚洲一区二区三区h| 波多野结衣xxxx| www亚洲国产| 日本一道本久久| 中文字幕永久视频| 精品国产三级a∨在线| 久久免费看毛片| 无码专区aaaaaa免费视频| 老汉色影院首页| 国产毛片视频网站| 午夜宅男在线视频| 日本阿v视频在线观看| 草草草视频在线观看| www.xxx麻豆| 女人高潮一级片| 欧美成人精品欧美一级乱| av网站在线不卡| 成熟丰满熟妇高潮xxxxx视频| 欧美黑人又粗又大又爽免费| 亚洲这里只有精品| 久久国产亚洲精品无码| 久章草在线视频| 97超碰人人澡| 艳母动漫在线观看| 亚洲五码在线观看视频| 中国黄色片免费看| 少妇无码av无码专区在线观看| 午夜免费福利视频在线观看| 欧美日韩性生活片| 欧美 国产 综合| 日本中文字幕网址| 日本免费黄视频| 999久久久精品视频| 免费黄色一级网站| 亚洲成人av免费看| 超碰在线超碰在线| 国产树林野战在线播放| 国产奶头好大揉着好爽视频| 天天爱天天操天天干| 日韩中文字幕a| 青青青在线观看视频| 樱空桃在线播放| www.日日操| 激情视频小说图片| 国产福利影院在线观看| 天堂网成人在线| av在线播放天堂| aaa免费在线观看| 88av.com| 日本www在线播放| 久久久无码中文字幕久...| 日本在线xxx| 福利视频一二区| 亚欧精品在线视频| 亚洲视频在线不卡| 极品粉嫩美女露脸啪啪| 能在线观看的av| 成人在线免费在线观看| 超碰10000| 在线观看18视频网站| 欧美一级片中文字幕| 国产卡一卡二在线| 深夜做爰性大片蜜桃| 国产精品igao| 午夜久久久精品| 香蕉精品视频在线| 无码人妻精品一区二区蜜桃百度| 亚洲36d大奶网| 午夜免费一级片| 欧美视频在线观看视频| 99热亚洲精品| 色国产在线视频| 国产精品三级一区二区| 97干在线视频| 国产高清视频网站| 青青青在线观看视频| 欧美精品色婷婷五月综合| 乱妇乱女熟妇熟女网站| 国产精品wwwww| 女同性恋一区二区| 性欧美在线视频| 男人透女人免费视频| 久久久精品麻豆| 国产精品久久久久7777| 黄色片在线免费| 凹凸国产熟女精品视频| 天堂在线一区二区三区| 欧美深夜福利视频| 400部精品国偷自产在线观看| 久久久久人妻精品一区三寸|