Как выполнить модульное тестирование компонента VUE, в котором есть ввод / ввод? - PullRequest
0 голосов
/ 03 декабря 2018

Я пишу какой-то модульный тест, но у меня возникли проблемы с компонентом, имеющим свойство inject.

Я использую shallowMount.Я провел некоторое исследование по этому поводу. И есть способ создать поддельные данные для provide https://vue -test-utils.vuejs.org / api / options.html # Обеспечить .Но я не увидел никакой информации или подсказок о inject.

Итак, мне нужны советы о том, как выполнить модульный тест с inject в Vuejs?

1 Ответ

0 голосов
/ 05 декабря 2018

То, что вы устанавливаете в свойстве обеспечить, это то, что используется для внедрения в смонтированный компонент.

В моем модульном тесте у меня есть

metadataModule = sandbox.createStubInstance(MetadataModule);
metadataService = sandbox.createStubInstance(MetadataService);

wrapper = shallowMount(MoveFileElement, {
        provide: {
            [SYMBOLS.METADATAMODULE]: metadataModule,
            [SYMBOLS.METADATASERVICE]: metadataService,
        },
        ....

Тогда в моем компоненте у меня есть

export default class MoveFileElement extends Mixins(Utilities) {       
    @Inject(SYMBOLS.METADATAMODULE) public metadataModule!: IMetadataModule;
    @Inject(SYMBOLS.METADATASERVICE) public metadataService!: MetadataService;

Теперь компонент имеет доступ к поддельным версиям модуля метаданных, который я подготовил в модульном тесте.

...