diff --git a/src/form/test/index.spec.js b/src/form/test/index.spec.js
index e76fc2be8..6f515be80 100644
--- a/src/form/test/index.spec.js
+++ b/src/form/test/index.spec.js
@@ -1 +1,58 @@
-// import { mount } from '../../../test';
+import { mount, later } from '../../../test';
+
+function mountForm(options) {
+ return mount(options, { attachToDocument: true });
+}
+
+test('submit event', async () => {
+ const onSubmit = jest.fn();
+ const wrapper = mountForm({
+ template: `
+
+
+
+
+ `,
+ methods: {
+ onSubmit,
+ },
+ });
+
+ wrapper.find('.van-button').trigger('click');
+
+ await later();
+ expect(onSubmit).toHaveBeenCalledWith({ A: 'bar' });
+});
+
+test('failed event', async () => {
+ const onFailed = jest.fn();
+ const wrapper = mountForm({
+ template: `
+
+
+
+
+
+ `,
+ data() {
+ return {
+ rulesA: [{ required: true, message: 'A failed' }],
+ rulesB: [{ required: true, message: 'B failed' }],
+ };
+ },
+ methods: {
+ onFailed,
+ },
+ });
+
+ wrapper.find('.van-button').trigger('click');
+
+ await later();
+ expect(onFailed).toHaveBeenCalledWith({
+ errors: [
+ { name: 'A', message: 'A failed' },
+ { name: 'B', message: 'B failed' },
+ ],
+ values: { A: '', B: '' },
+ });
+});