Vue,Jest,jQuery-测试jQuery验证

时间:2020-02-10 21:52:37

标签: javascript jquery vue.js jestjs

我有这个测试。

    test('Can registerFormListener', () => {
        const spy = jest.spyOn(wrapper.vm, "registerFormListener");
        wrapper.vm.registerFormListener();
        expect(spy).toBeCalled();
    });

这是在监视此功能。

registerFormListener: function () {
oiService.initFormValidation(selection);
}

这称为验证功能。

static initFormValidation(selection: string, () => void) {
            $(selector).validate({
                rules: {
                    email: {
                        required: false,
                        email: true
                    },
                },
                messages: {
                    email: {
                        required: "Please enter an email"
                    },
                },
                submitHandler: function() {
                    onSubmit != null ? onSubmit() : null;
                }
            });
}

但是,Jest没有使用此函数中的任何jQuery。我收到错误TypeError: $(...).validate is not a function

我在package.json中安装了jQuery,但是要让Jest拿起它,我必须添加一个setup-jest.js文件,并告诉它拾取我们使用的所有全局变量。

我还必须将这个以及所有其他jQuery函数添加到这个setup-jest文件中,以使其获取验证函数吗?还是有其他解决方案?

2 个答案:

答案 0 :(得分:0)

无法评论Jest内容,但是$('.foo').validate()不是本机jQuery方法。它需要jQuery validation plugin(或者也许是其他带有validate()方法的插件,但这是我最常看到的插件)。

您是否在项目中安装了jquery-validation

答案 1 :(得分:0)

要使用jQuery验证,请在测试中将其导入

4string

您还需要在setup-jest.js中使用jQuery

{
   "Version":"2012-10-17",
   "Statement":[{
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal":"*",
      "Action":[
         "s3:GetObject",
         "s3:PutObject"
      ],
      "Resource":[
         "arn:aws:s3:::your-bucket-arn-here/*"
      ]
    }]
}