NativeScript - как заставить модульные тесты работать правильно? - PullRequest
0 голосов
/ 13 марта 2020

Я пишу приложение с использованием NativeScript 6+ и Angular 8 +.

Я пытаюсь написать несколько модульных тестов и запустить их.

Я прочитал документацию по модульному тестированию: https://docs.nativescript.org/tooling/testing/testing

Я выполнил инструкции по настройке тестов и использованию TestBed. Мои тесты не работают и выдают ошибки.

Вот мой репозиторий: https://github.com/aubrey-fowler/NativeScriptUnitTests

Вопросы:

  1. Документация показывает только пример того, как написать тест для компонента. Как мне написать тест на услугу? Мне также нужно использовать TestBed для этого, потому что в моем сервисе есть внедрение зависимостей.
  2. Мои тесты выдают ошибки. Почему и как я могу их исправить?

Ошибки:

no reachable hosts

на моем Android телефоне

фрагмент кода:

import { ItemsComponent } from '../app/item/items.component';

import {
    nsTestBedAfterEach,
    nsTestBedBeforeEach,
    nsTestBedRender
} from 'nativescript-angular/testing';

describe('ItemsComponent Test', () => {

    beforeEach(nsTestBedBeforeEach([ItemsComponent]));
    afterEach(nsTestBedAfterEach(false));

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

        nsTestBedRender(ItemsComponent).then((fixture) => {
            fixture.detectChanges();
            const component = fixture.componentInstance;
            expect(component).toBeTruthy;
        });

    });

});

1 Ответ

1 голос
/ 13 марта 2020
  1. Я проверил ваше репо, я не уверен, что он устарел, так как когда я пытался запустить tns test [ios|android], он сломался, и я заметил, что ни один из файлов конфигурации кармы не существовал в репо. Мне пришлось заново инициализировать тестирование с помощью tns test init, и тогда оно работало просто отлично.

  2. Когда у вас есть зависимости для вашего компонента, вам придется передавать файлы Service в массиве provider (Второй параметр функции nsTestBedBeforeEach). Если вы хотите протестировать службу самостоятельно, вам придется создать экземпляр самостоятельно и запустить тесты. Если у службы есть зависимости, вы обязаны передать зависимости в конструкторе. Точно так же, как и в Angular Web .

...