我正在测试表单组件,所有字段均已通过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
吗?
感谢您的反馈
答案 0 :(得分:1)
您是否尝试过通过sinon使用函数的存根?他们在vue test utils和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