天天看點

關于jasmine裡debugElement.query和fixture.detectChanges的依賴關系

單元測試代碼:import { Component } from '@angular/core';

import { async, ComponentFixture, TestBed } from '@angular/core/testing';

import { ReactiveFormsModule } from '@angular/forms';

import { ActivatedRoute } from '@angular/router';

import {

 CheckoutDeliveryService,

 DeliveryMode,

 I18nTestingModule,

} from '@spartacus/core';

import { Observable, of } from 'rxjs';

import { CheckoutConfigService } from '../../services/checkout-config.service';

import { CheckoutStepService } from '../../services/checkout-step.service';

import { DeliveryModeComponent } from './delivery-mode.component';

import createSpy = jasmine.createSpy;

import { LoaderState } from '../../../../../../core/src/state/utils/loader';

import { By } from '@angular/platform-browser';

@Component({

 selector: 'cx-spinner',

 template: '',

})

class MockSpinnerComponent {}

class MockCheckoutDeliveryService {

 loadSupportedDeliveryModes = createSpy();

 setDeliveryMode = createSpy();

 getSupportedDeliveryModes(): Observable {

   return of();

 }

 getSelectedDeliveryMode(): Observable {

 getLoadSupportedDeliveryModeProcess(): Observable> {

}

class MockCheckoutConfigService {

 getPreferredDeliveryMode(): string {

   return '';

class MockCheckoutStepService {

 next = createSpy();

 back = createSpy();

 getBackBntText(): string {

   return 'common.back';

const mockActivatedRoute = {

 snapshot: {

   url: ['checkout', 'delivery-mode'],

 },

};

describe('DeliveryModeComponent', () => {

 // let component: DeliveryModeComponent;

 let fixture: ComponentFixture;

 beforeEach(async(() => {

   TestBed.configureTestingModule({

     imports: [ReactiveFormsModule, I18nTestingModule],

     declarations: [DeliveryModeComponent, MockSpinnerComponent],

     providers: [

       {

         provide: CheckoutDeliveryService,

         useClass: MockCheckoutDeliveryService,

       },

       { provide: CheckoutStepService, useClass: MockCheckoutStepService },

       { provide: CheckoutConfigService, useClass: MockCheckoutConfigService },

       { provide: ActivatedRoute, useValue: mockActivatedRoute },

     ],

   }).compileComponents();

 }));

 beforeEach(() => {

   fixture = TestBed.createComponent(DeliveryModeComponent);

   // component = fixture.componentInstance;

   console.log('beforeEach outside continue button describe');

 });

 describe('continue button', () =>{

   const getContinueBtn = () => fixture.debugElement.query(By.css('.cx-checkout-btns .btn-primary'));

   // const setDeliveryModeId = (value: string) => {

   //  component.mode.controls['deliveryModeId'].setValue(value);

   it('should be available', () => {

     let button = getContinueBtn();

     console.log('before call fixture.detectChanges: ' + button);

     fixture.detectChanges();

     button = getContinueBtn();

     console.log('after call fixture.detectChanges: ' + button);

     expect(button).toBeTruthy();

   });

});

關于jasmine裡debugElement.query和fixture.detectChanges的依賴關系
關于jasmine裡debugElement.query和fixture.detectChanges的依賴關系
關于jasmine裡debugElement.query和fixture.detectChanges的依賴關系
關于jasmine裡debugElement.query和fixture.detectChanges的依賴關系

繼續閱讀