Жасмин Контрольный кейс для кнопки закрытия - PullRequest
0 голосов
/ 06 сентября 2018

Я впервые пишу тестовый пример.

Я хочу написать тест-кейс для метода close, который будет скрывать баннер, а также будет устанавливать cookie-файл, чтобы при повторном посещении сайта он больше не появлялся.

Я хотел бы охватить следующие сценарии

  • должен вызывать метод close при нажатии на кнопку
  • мат-карта должна была быть спрятана после close вызова метода
  • Файл cookie должен был быть создан.

Пожалуйста, ведите меня.

Ниже мой код

Компонентный

export class APComponent {

  private cookie: any;
  private cpBanner: boolean;

  constructor(
    private cookieService: CookieService) {
    this.cookie = this.cookieService.get('CP_BANNER');
    this.cpBanner = this.cookie ? false : true;
  }

  close() {
    this.cpBanner = false;
    this.cookieService.put( 'CP_BANNER', 'true' );
  }

}

HTML

<mat-card *ngIf="apBanner"><mat-card-actions>
    <mat-icon name="cross" cropped="cropped" (click)="close()"></mat-icon>
  </mat-card-actions></mat-card>

Мои Spec.ts

describe('APComponent', () => {
    let fixture: ComponentFixture<APComponent>;
    let component: APComponent;

    beforeEach(() => {
        TestBed.configureTestingModule({
            schemas: [ CUSTOM_ELEMENTS_SCHEMA ],
            declarations: [ APComponent ],
            imports: [CommonModule, CookieModule.forRoot()],

        });
        TestBed.compileComponents();
        fixture = TestBed.createComponent(APComponent);
    });

    it('should create the app', async(() => {
        const app = fixture.debugElement.componentInstance;
        expect(app).toBeTruthy();
    }));

    it('should close the banner', async(() => {

    }));

});

1 Ответ

0 голосов
/ 07 сентября 2018

Это все, что вам нужно охватить с точки зрения модульного тестирования метода close. Проверка того, что он вызывается при нажатии кнопки, больше подходит для тестирования функциональности в тестах e2e.

Первый тест проверяет, что он устанавливает переменную экземпляра в false. Чтобы убедиться, что это так, мы вручную устанавливаем переменную в true перед вызовом close ().

it('should close the banner', async(() => {
  // Arrange
  const app = fixture.debugElement.componentInstance;
  app.cpBanner = true;

  // Act
  app.close();

  // Assert
  expect(app.cpBanner).toBe(false);
}));

Второй тест проверяет, вызывает ли он сервис для создания куки. Метод close фактически не создает cookie в конце концов. Проверять фактическое создание файлов cookie следует в спецификации файла CookieService. Чтобы утверждать, что метод был вызван, вы используете Jasmine spies . Итак, мы сначала получаем дескриптор сервиса, который был внедрен в приложение, и следим за его методом put.

Примечание: я не смог проверить, работает ли приведенный ниже код, потому что у меня нет службы, но он должен хотя бы продемонстрировать логику.

it('should call the cookie service to create the cookie', async(() => {
  // Arrange
  const app = fixture.debugElement.componentInstance;
  const cookieService = fixture.TestBed.get(CookieService);
  spyOn(cookieService, 'put');

  // Act
  app.close();

  // Assert
  expect(cookieService.put).toHaveBeenCalledWith('CP_BANNER', 'true');
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...