diff --git a/packages/stepper/test/__snapshots__/index.spec.js.snap b/packages/stepper/test/__snapshots__/index.spec.js.snap
new file mode 100644
index 000000000..6bb1fa492
--- /dev/null
+++ b/packages/stepper/test/__snapshots__/index.spec.js.snap
@@ -0,0 +1,17 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`disable stepper input 1`] = `
+
+
+
+
+
+`;
+
+exports[`disabled stepper 1`] = `
+
+
+
+
+
+`;
diff --git a/packages/stepper/test/index.spec.js b/packages/stepper/test/index.spec.js
new file mode 100644
index 000000000..00b1b5b31
--- /dev/null
+++ b/packages/stepper/test/index.spec.js
@@ -0,0 +1,94 @@
+import Stepper from '..';
+import { mount } from '@vue/test-utils';
+
+test('disabled stepper', () => {
+ const wrapper = mount(Stepper, {
+ propsData: {
+ disabled: true
+ }
+ });
+ expect(wrapper.html()).toMatchSnapshot();
+});
+
+test('disable stepper input', () => {
+ const wrapper = mount(Stepper, {
+ propsData: {
+ disableInput: true
+ }
+ });
+ expect(wrapper.html()).toMatchSnapshot();
+});
+
+test('click button', () => {
+ const wrapper = mount(Stepper, {
+ propsData: {
+ value: 1,
+ max: 2
+ }
+ });
+
+ const plus = wrapper.find('.van-stepper__plus');
+ const minus = wrapper.find('.van-stepper__minus');
+
+ plus.trigger('click');
+ plus.trigger('click');
+ minus.trigger('click');
+ minus.trigger('click');
+
+ expect(wrapper.emitted('input')).toEqual([[2], [1]]);
+ expect(wrapper.emitted('overlimit')).toEqual([['plus'], ['minus']]);
+});
+
+test('correct value when value is not correct', () => {
+ const wrapper = mount(Stepper, {
+ propsData: {
+ value: 50,
+ max: 30,
+ min: 10
+ }
+ });
+
+ const input = wrapper.find('input');
+ input.element.value = 1;
+ input.trigger('input');
+ input.element.value = 'abc';
+ input.trigger('input');
+ wrapper.setData({ value: 'abc' });
+ input.trigger('input');
+ wrapper.setData({ value: '' });
+ input.trigger('input');
+ wrapper.setData({ value: 40 });
+ input.trigger('input');
+ wrapper.setData({ value: 30 });
+ input.trigger('input');
+
+ expect(wrapper.emitted('input')).toEqual([
+ [30],
+ [10],
+ [''],
+ [10],
+ [10],
+ [30],
+ [30]
+ ]);
+});
+
+test('only allow interger', () => {
+ const wrapper = mount(Stepper, {
+ propsData: {
+ integer: true
+ }
+ });
+
+ const fn = jest.fn();
+ wrapper.vm.onKeypress({
+ keyCode: 46,
+ preventDefault: fn
+ });
+ wrapper.vm.onKeypress({
+ keyCode: 45,
+ preventDefault: fn
+ });
+
+ expect(fn.mock.calls.length).toEqual(1);
+});