Как проверить наблюдателя Vue, который следит за вычисленным свойством из VueX?
Предположим, у меня есть следующий компонент:
import { mapState } from 'vuex';
import externalDependency from '...';
export default {
name: 'Foo',
computed: {
...mapState(['bar'])
},
watch: {
bar () {
externalDependency.doThing(this.bar);
}
}
}
При тестировании я хочу убедиться, что externalDependency.doThing()
вызывается с bar
(который происходит из состояния vuex) следующим образом:
it('should call externalDependency.doThing with bar', () => {
const wrapper = mount(Foo);
const spy = jest.spyOn(externalDependency, 'doThing');
wrapper.setComputed({bar: 'baz'});
expect(spy).toHaveBeenCalledWith('baz');
});
Vue test-utils имеет метод setComputed, который позволяет мне в настоящее время тестировать его, но я продолжаю получать предупреждения о том, что setComputed скоро будет удалено, и я не знаю, как еще это можно проверить:
https://github.com/vuejs/vue-test-utils/issues/331
Ответы
Ответ 1
Вам понадобится какой-то мутатор в экземпляре VueX, да, это действительно вводит в тест другой не связанный модуль, но лично по вашему тесту, включая использование Vuex, эта концепция уже была нарушена.
Изменение состояния неожиданным образом более подвержено поведению, которое отличается от фактического использования.