web-dev-qa-db-ja.com

Vue.js unit:test:Vee-Validateバリデータープラグインをモックする方法はありますか?

フォームコンポーネントをテストしています。すべてのフィールドは_vee-validate_で検証されています。現在、ラッパーにバリデータをマウントしています。

_import VeeValidate from "vee-validate";

Vue.use(VeeValidate, { errorBagName: "errors" });

describe("ContactForm.vue", () => {
 const v = new VeeValidate.Validator();

 beforeEach(() => {
  options = {
        sync: false,
        provide: () => ({
          $validator: v
        })
 };
 wrapper = shallowMount(ContactForm, options);
});
_

_$validator_には次のような関数があります:init(), localize(), validateAll() , reset(), ...いくつかのテストでバイパスできます

とにかくそのようなvalidatorJest関数でモックすることはありますか?

フィードバックをありがとう

9
user762579

sinon を使用して関数のスタブを使用しようとしましたか?彼らは vue test utils with setMethodsについて言及しました。

次のようになります。

import { mount } from '@vue/test-utils'
import sinon from 'sinon'
import ContactForm from './ContactForm.vue'

const wrapper = mount(ContactForm)
const submit = wrapper.find('button')
const validateStub = sinon.stub()

allInputs.setMethods({ validateAll: validateStub })
submit.trigger('click')
expect(validateStub.called).toBe(true)

したがって、たとえばフォームを送信するときにvalidateAllメソッドが呼び出されたかどうかを知ることができます。または、 github/VeeValidate で質問してみてください。

1
Sylhare