0

我正在测试我的组件并且发生了一个非常奇怪的问题。

这是我的测试

import { mount } from 'avoriaz';


let wrapper = mount(MyComponent, { globals: {$route},});

it('the click changes the value of shown', () => {
    // This passes
    expect(wrapper.vm.shown).to.equal(false);

    // the click on this element will turn shown value into true
    wrapper.first('#my_link').trigger('click');

    // the value of shown is indeed true now
    console.log(wrapper.vm.shown); // LOG LOG: true

    expect(wrapper.vm.shown).to.equal(true); // expected undefined to equal true
});

发生了什么,为什么shownundefined作为参数传递给expect方法并且在通过显示时是布尔值console.log

4

1 回答 1

1

expect第二次调用时 DOM 还没有完成更新。

用于$nextTick在调用之前等待 DOM 更新expect

wrapper.first('#my_link').trigger('click');

wrapper.vm.$nextTick(() => {
  expect(wrapper.vm.shown).to.equal(true);
});

在使用异步代码时,console.log有时会延迟记录值,这意味着它们不会是您在该行执行时所期望的值。看到这个帖子。

于 2017-08-10T13:34:09.600 回答