Squeak.ru - шаблоны программирования

Тестирование — периодическая ошибка: «Ошибка: селектор #root0 не соответствует ни одному элементу»

Я работаю над созданием приложения в бета-версии Angular2, и когда я запускаю свой тестовый пример, я случайно получаю ошибку:

Селектор "#root0" не соответствует ни одной ошибке элементов.

Код теста:

@Component({
  template: '',
  directives: [GroupBox, GroupBoxHeader]
})
class TestComponent {
}

describe('group-box control', () => {

  it('should show the title', injectAsync([TestComponentBuilder], (tcb) => {
    return tcb.overrideTemplate(TestComponent, '<group-box><group-box-header>Title Content</group-box-header></group-box>')
      .createAsync(TestComponent).then( (fixture) => {
        fixture.detectChanges();
        let compiled = fixture.debugElement.nativeElement;
        expect(compiled).toContainText('Title Content');
    });
  }));

  it('should show the body', injectAsync([TestComponentBuilder], (tcb) => {
    return tcb.overrideTemplate(TestComponent, '<group-box><group-box-header>Title Content</group-box-header>Body Content</group-box>')
      .createAsync(TestComponent).then( (fixture) => {
        fixture.detectChanges();
        let compiled = fixture.debugElement.nativeElement;
        expect(compiled).toContainText('Body Content');
    });
  }));
});

Я использую Karma с Jasmine, следуя рекомендациям https://github.com/juliemr/ng2-test-seed

Следующий репозиторий воспроизводит ошибку: https://github.com/cangosta/ng2_testing_controls.

Трассировки стека:

Это исправлено в Angular 2.0.0-beta.3.


  • Гюнтер, я обновил репозиторий упрощенной версией 14.01.2016
  • Существует ошибка с TestComponentBuilder с templateUrl. Временное исправление для этого состоит в том, чтобы использовать _1_‹div›‹/div›_2_, как вы делаете. НО, вы переопределяете компонент TestComponent, а НЕ компонент GroupBox, который также имеет _3_... Я считаю, что именно это вызывает ошибку, но, к сожалению, я не знаю, как это исправить - я тестировал только изолированные компоненты... 14.01.2016
  • Sasxa, удаление templateUrl из компонента группового поля действительно решает проблему, но это не решение, поскольку в моем приложении есть огромный шаблон компонента. Мне кажется, что придется ждать, пока команда angular исправит этот баг... 15.01.2016
  • Возможный дубликат Angular2 - компонент тестирования с во-вторых, он создает «селектор #root0 не соответствует ни одной ошибке элементов» 15.01.2016
  • 14 01 2016 11:40:32.073:ИНФОРМАЦИЯ [карма]: сервер Karma v0.13.19 запущен по адресу http://localhost:9876/ 14 01 2016 11:40:32.078:INFO [лаунчер]: Запуск браузера Chrome 14 01 2016 11:40:32.669:INFO [Chrome 47.0.2526 (Windows 8.1 0.0.0)]: Подключено к сокету /#9hKZqsNbKFPfYWzIAAAA с идентификатором 50428936 Chrome 47.0.2526 (Windows 8.1 0.0.0) элемент управления групповым полем должен отображать тело FAILED Ошибка: селектор «# root0» не соответствует ни одному элементу Ошибка: селектор «# root0» не соответствует ни одному элементу в новое BaseException (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2.dev.js:8080:21) в DomRenderer_.createRootHostView (C:/Projectos/Fontes/Stratus-HTML/build/assets/ js/angular2.dev.js:15248:15) в AppViewManager_.createRootHostView (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2.dev.js:11265:52) в C:/Projectos/ Шрифты/Stratus-HTML/build/assets/js/angular2. dev.js:14531:46 в Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) в Zone.run (C:/Projectos/Fontes /Stratus-HTML/build/assets/js/testing.dev.js:2544:30) в zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19 ) в lib$es6$promise$$internal$$tryCatch (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1511:16) в lib$es6$promise$$internal $$invokeCallback (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1523:17) в lib$es6$promise$$internal$$publish (C:/Projectos/Fontes /Stratus-HTML/build/assets/js/angular2-polyfills.js:1494:11) в C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:243:5 в микрозадаче (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2557:15) на Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/a ssets/js/angular2-polyfills.js:138:17) в Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) в zoneBoundFn (C :/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) в lib$es6$promise$asap$$flush (C:/Projectos/Fontes/Stratus-HTML/build /assets/js/angular2-polyfills.js:1305:9) Ошибка: невозможно прочитать свойство hostView неопределенного типа Ошибка типа: невозможно прочитать свойство hostView неопределенного в новом ComponentFixture_ (C:/Projectos/Fontes/Stratus-HTML/ build/assets/js/testing.dev.js:2047:97) в C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2145:16 в Zone.run (C: /Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) в Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev .js:2544:30) в zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-po lyfills.js:111:19) в lib$es6$promise$$internal$$tryCatch (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1511:16) в lib $es6$promise$$internal$$invokeCallback (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1523:17) в lib$es6$promise$$internal$$publish (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1494:11) в C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills. js:243:5 в микрозадаче (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2557:15) в Zone.run (C:/Projectos/Fontes/Stratus-HTML /build/assets/js/angular2-polyfills.js:138:17) в Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) в zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) в lib$es6$promise$asap$$flush (C:/Projectos/Fonte s/Stratus-HTML/build/assets/js/angular2-polyfills.js:1305:9) Ошибка: невозможно прочитать свойство 'detectChanges' неопределенного TypeError: невозможно прочитать свойство 'detectChanges' неопределенного в C:/Projectos/Fontes/ Stratus-HTML/build/test/infrastructure/controls/group-box.test.js:52:20 в Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js :138:17) в Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) в zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML /build/assets/js/angular2-polyfills.js:111:19) в lib$es6$promise$$internal$$tryCatch (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills .js:1511:16) в lib$es6$promise$$internal$$invokeCallback (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1523:17) в lib$ es6$promise$$internal$$опубликовать (C:/Projectos/Fontes/Stratus-H 04.02.2016

Ответы:


1

См. https://github.com/angular/angular/issues/6483#issuecomment-179557485 для более подробной информации

В общем, что мне пришлось сделать:

Добавьте это перед моими тестами компонентов:

  • Добавьте это в мой импорт:
  • Я попробую. Я не использую TS, я использую ES6+Traceur. Я создал репозиторий, в котором вы можете легко воспроизвести ошибку: github.com/cangosta/ng2_testing_controls.
import {setBaseTestProviders} from 'angular2/testing';

import {
  TEST_BROWSER_PLATFORM_PROVIDERS,
  TEST_BROWSER_APPLICATION_PROVIDERS
} from 'angular2/platform/testing/browser';

Вручную добавьте типизацию для jasmine с помощью tsd install jasmine -so и добавьте ///<reference... в тестовые файлы;

  setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS);
04.02.2016
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...