フォームコンポーネントをテストしています。すべてのフィールドは_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(), ...
いくつかのテストでバイパスできます
とにかくそのようなvalidator
をJest
関数でモックすることはありますか?
フィードバックをありがとう
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 で質問してみてください。