Тестирование в Angular 5 с Karma и ngrx / store - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я работаю над своим первым «проектом rl» для компании (для моей дипломной работы), и я начал тестировать наше приложение Angular 5, и у меня возникли некоторые вопросы.Автоматически сгенерированные тесты, которые Angular пишет для всех вас, потерпели неудачу, и после работы над ними я пришел к мысли, что мне нужно импортировать все зависимости из app.module.ts в admin.component.spec.ts, чтобы он работал,Теперь, это вроде работает (это было с другими классами), но это просто кажется неправильным.Я нахожусь в точке, где я не верю, что вы должны писать подобные тесты, и я не могу найти в Интернете никакой информации об этом.Это мой первый вопрос, а теперь второй: мой описанный метод не работает с ngrx / store.В моем app.module.ts я сделал

import { StoreModule } from '@ngrx/store';

и

@NgModule({
  imports: [
    StoreModule.forRoot({}), 
    ...
  ]
  ...
})

Но что бы я ни делал в app.component.spec.ts, тесты всегда будутбросить

Failed: StaticInjectorError(DynamicTestModule)[LayoutStateStore -> Store]: 
  StaticInjectorError(Platform: core)[LayoutStateStore -> Store]: 
    NullInjectorError: No provider for Store!

Надеюсь, вы понимаете мои проблемы и можете мне помочь.

1 Ответ

0 голосов
/ 20 ноября 2018

Чтобы коснуться вашей первой точки

Я подумал, что мне нужно импортировать все зависимости из app.module.ts в admin.component.spec.ts для егоработа

Не совсем.Это обычно происходит, когда у вас есть несколько дочерних компонентов / модулей, и если вы просто заботитесь о них как о чёрном ящике, вы можете использовать: schemas: [CUSTOM_ELEMENTS_SCHEMA] и / или NO_ERRORS_SCHEMA, чтобы просто протестировать свой собственный компонент.Более подробную информацию о том, когда вы можете использовать это, можно найти здесь

Относительно вашего вопроса в Магазине - Похоже, вы используете магазин функций, и вы предоставляете толькопустой магазин для TestBed.

. Вам нужно будет посмеяться над вашим магазином функций, примерно так:

imports: [StoreModule.forRoot({
          ...reducer, \\ your reducers
          LayoutStateStore: combineReducers(reducer) \\ the actual feature store you are using
        })]
...