Издевательский ДОКУМЕНТ в Angular / Карма - PullRequest
0 голосов
/ 20 мая 2019

Как вы издеваетесь над DOCUMENT (теневым представлением HTMLDocument) в Angular?Реализация использует это в конструкторе:

@Inject(DOCUMENT) private document: Document

Посмотрев на это Как внедрить Document в службу Angular 2 Я поместил это в мои настройки .spec:

const lazyPath = 'dummy';
const pathname = `/${lazyPath}`;
const document = { location: { pathname } as Location } as Document;
beforeEachProviders(() => ([ {provide: DOCUMENT, useValue: document} ]));

Но это дает мне ошибки:

ERROR in ./src/app/main/components/app-lazy/app-lazy.component.spec.ts
Module not found: Error: Can't resolve '@angular/core/testing/src/testing_internal' in '...'
resolve '@angular/core/testing/src/testing_internal' in '....'
  Parsed request is a module
  using description file: .../package.json (relative path: ...)
    Field 'browser' doesn't contain a valid alias configuration
    resolve as module

Когда я использую простых провайдеров: [] в TestBed.configureTestingModule вместо beforeEachProviders из пакета testing_internal, компонент не определен, например, не инициализирован должным образом,Он инициализируется только в модульных тестах (в не тестовом исполнении оба работают), когда я переключаюсь с внедренного документа на объект окна (для которого я не могу установить / смоделировать местоположение).Что я могу сделать?

1 Ответ

0 голосов
/ 20 мая 2019

Публикация этого в качестве ответа, потому что форматирование не работает в комментарии.

Не могли бы вы поделиться стеком стека, если это возможно?Когда мне нужно ввести макет, я обычно настраиваю его следующим образом:

  // ... beginning of file

  const mockDocument = { location: { pathname } };

  beforeEach(() => TestBed.configureTestingModule({
    imports: [...],
    // Provide DOCUMENT Mock 
    providers: [
      { provide: DOCUMENT, useValue: mockDocument }
    ]
  }));

  // ...rest of file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...