亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

預期間諜 toggleStyle 在調用函數時被調用

預期間諜 toggleStyle 在調用函數時被調用

偶然的你 2023-06-15 10:23:16
我正在使用茉莉花測試。我有這個功能: style: string; toggleStyle(style: string, version: string) {    this.style = `mapbox://styles/mapbox/${style}-${version}`;  }和模板: <div class="map-menu-item" (click)="toggleStyle('outdoors', 'v11')" [state]="[true]" menuItemToggle>        <span>          <fa-icon [icon]="faMountain" size="sm" class="pr-2"></fa-icon>Outdoors        </span>      </div>所以我有這個單元測試功能: fit('Should mapbox style when user click on icon', () => {    spyOn(component, 'toggleStyle').and.callThrough();    fixture.debugElement.query(By.css('.map-menu-item')).nativeElement.click();    fixture.detectChanges();    expect(component.toggleStyle).toHaveBeenCalled();  });所以我調用函數:toggleStyle但我仍然收到此錯誤:Expected spy toggleStyle to have been called.當然,我用谷歌搜索了這個錯誤。但是我做了一個 callThrough 并調用了函數。那么我必須改變什么?
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

選擇器選擇它匹配的第一個元素,所以你的選擇器匹配這個元素:


<div class="map-menu-item" (click)="toggleLayer('amsterdam')" [state]="[true]" menuItemToggle>

        <span>

          <fa-icon [icon]="faVideo" size="sm" class="pr-2"></fa-icon>CityHeat

        </span>

      </div>

單擊處理程序調用的位置toggleLayer。


將您的 HTML 更改為更具體:


<div class="d-flex flex-column justify-content-start map-menu somethingMoreSpecific">

      <span class="map-menu-header">Layer</span>

      <div class="map-menu-item" (click)="toggleStyle('light', 'v10')" [state]="[true]" menuItemToggle>

        <span>

          <fa-icon [icon]="faAdjust" size="sm" flip="horizontal" class="pr-2"></fa-icon>Light

        </span>

      </div>     

      <div class="map-menu-item" (click)="toggleStyle('outdoors', 'v11')" [state]="[true]" menuItemToggle>

        <span>

          <fa-icon [icon]="faMountain" size="sm" class="pr-2"></fa-icon>Outdoors

        </span>

      </div>

      <div class="map-menu-item" (click)="toggleStyle('satellite', 'v9')" [state]="[true]" menuItemToggle>

        <span>

          <fa-icon [icon]="faSatellite" size="sm" class="pr-2"></fa-icon>Satellite

        </span>

      </div>

    </div>

fit('Should mapbox style when user click on icon', () => {

    spyOn(component, 'toggleStyle').and.callThrough();

    fixture.debugElement.query(By.css('.somethingMoreSpecific .map-menu-item')).nativeElement.click(); // change the selector to select the correct div

    fixture.detectChanges();

    expect(component.toggleStyle).toHaveBeenCalled();

  });


查看完整回答
反對 回復 2023-06-15
  • 1 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號