0
我有这个函数,它将电子邮件和访问密钥作为参数,并对mailboxlayer api进行网络调用,并返回带有验证结果的承诺。在使用Jest测试JavaScript异步代码时遇到问题JS
function validateEmail(email, accessKey) {
return new Promise(function (fulfill, reject) {
request.get("http://www.apilayer.net/api/check?access_key=" +
accessKey + "&email=" + email + "&smtp=1&format=1")
.end(function (err, res) {
if (err) {
reject(err);
}
else {
fulfill(res.body);
}
});
});
}
我想测试这一点,所以我创建了一个下面的测试
describe('EmailValidator', function() {
it("Should take an email,accessKeys as parameters and return a Promise",
function() {
const data = {
email: "[email protected]",
did_you_mean: "",
user: "somemail",
domain: "gmail.com",
format_valid: true,
mx_found: true,
smtp_check: true,
catch_all: null,
role: false,
disposable: false,
free: true,
score: 0.8
};
obj.validateEmail("[email protected]","80867a1cafc7017cd9a9b510c01d1ba7")
.then(value => {
expect(data).toEqual(value);
})
});
});
但随后获取失败的结果,在数据对象中(我用来比较网络调用的结果),我只是将用户值从用户:“somemail”改为用户:“anothermail”。 所以在这里,我期待测试失败,因为我比较的对象与我从网络获得的对象不同。但结果并不如预期,但测试通过一些建议。结果如下图所示
我想知道这里发生了什么,我该如何实现这个功能,就像我期望的那样,即让这个测试失败。
你太棒了。谢谢。有效 !!! –