Я знакомлюсь с шуткой и vue, и я хотел посмотреть, как сделать так, чтобы метод срабатывал при смене пропеллера. В этом конкретном сценарии это тривиально, и это казалось прямым. Но это не работает.
Компонент Watcher
@Watch("id")
public async idChanged() {
this.calculateStatus();
}
beforeEach - запускает оболочку для каждого теста
beforeEach(async () => {
var httpClient = new PemHttpClient(vue);
var v3ReferenceDatumService = new V3ReferenceDatumService(httpClient, "");
var contractService = new V3ContractService(httpClient, "", v3ReferenceDatumService);
wrapper = mount(AmendmentIdDisplay, {
provide: {
v3ContractService: contractService,
},
propsData: {
id: "82.5.1"
}
});
await wrapper.vm.$nextTick();
})
Jest Test
let calculateFired = jest.spyOn(wrapper.vm, "calculateStatus");
wrapper.setProps({
...wrapper.props(),
id: "1"
})
await wrapper.vm.$nextTick();
expect(calculateFired).toBeCalled();
Я ожидаю увеличил счетчик вызовов, но это не так. Осталось на нуле. Если я вручную вызываю wrapper.vm.calculateStatus (), шпион работает правильно. Таким образом, setProps либо вообще не запускает наблюдателя, либо происходит какая-то странная ссылочная вещь, которая заставляет метод, который вызывается в наблюдателе, не быть методом, за которым я слежу. Я не уверен, какой.