Как выполнить модульное тестирование компонента VUE, в котором есть ввод / ввод?

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

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

Итак, мне нужно несколько советов о том, как сделать модульное тестирование с inject в Вуэйс?

1 ответ

Решение

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

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

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;

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

Другие вопросы по тегам