根据文档,通过 `wrapper.vm` 访问 `data` 属性是正确的方式吗?

Dev*_*ime 4 chai vue.js vuejs2 vue-test-utils

如何访问dataVue 测试实例中的属性?

我看到您可以访问props,但没有data等效项。我可以通过使用类似的东西来获取数据属性wrapper.vm.foo,但我觉得还有另一种方法可能更符合测试框架的要求。

应用程序

<script>
    export default {
      data() {
        return {
          foo: 'bar'
        }
      }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

应用规范.js

import { shallowMount } from '@vue/test-utils'
import App from '@/App.vue'
import { expect } from 'chai';

describe("App.vue", () => {

  let wrapper;

  beforeEach(() => {
    // use this to check the state of anything in the view
    wrapper = shallowMount(App)
  });

  it("Module has the expected data attribute", () => {
    expect(wrapper.vm.foo).to.equal('bar'); // passes

    expect(wrapper.foo).to.equal('bar'); // fails
    expect(wrapper.data('foo')).to.equal('bar'); // fails
    expect(wrapper.data().foo).to.equal('bar'); // fails
  });


  it('simple passing test', () => {
    expect(1).to.equal(1);
  });


});
Run Code Online (Sandbox Code Playgroud)

Dev*_*ime 8

这可能是可能的,但这.vm是正确的方法。

vue-test-utils 文档中的示例:

it('button click should increment the count', () => {

  expect(wrapper.vm.count).toBe(0)
  const button = wrapper.find('button')
  button.trigger('click')

  // `wrapper.vm.count` it is!
  expect(wrapper.vm.count).toBe(1)

})
Run Code Online (Sandbox Code Playgroud)