我有一个问题,我有此功能
authAnonymous: function (callback) {
rest
.post(wso2config.token.host + "/" + wso2config.token.path, {
username: wso2config.clientId,
password: wso2config.clientSecret,
data: {
username: wso2config.anonymousUser.username,
password: wso2config.anonymousUser.password,
grant_type: "password",
redirect_uri: wso2config.redirect_uri,
scope: "somescope:thisisit"
}
})
.on("complete", function (data) {
if (data.error) callback(data, null);
else {
data.anonym = true;
callback(null, {
openid_data: data
});
}
});
},
所以我想编写代码覆盖此功能,并使用Jest进行一些单元测试,这是单元测试代码
test("do login using authAnonymous", done => {
openID.authAnonymous(function (error, data) {
if (!error) {
expect(data.anonym).toBeTruthy();
} else {
//expect(data.anonym).toBe(false);
}
});
done();
});
某种程度上,此单元测试按预期工作,但代码覆盖范围内指出该语句未包含在内
这句话不包括在内
据我了解,我的代码可以正常运行,并且单元测试正在按预期方式工作,为什么开玩笑的代码覆盖率表明该语句未被覆盖,任何人都可以解释此语句如何被覆盖吗?以及为什么没有涵盖我的问题,我相信这是我的错,但是我不知道在这里进行什么调查
答案 0 :(得分:0)
在完成所有操作之前,您正在呼叫done()
。您需要在所有更改和检查完成后调用它:
test("do login using authAnonymous", done => {
openID.authAnonymous(function (error, data) {
if (!error) {
expect(data.anonym).toBeTruthy();
} else {
//expect(data.anonym).toBe(false);
}
done(); // <-- at the end of callback
});
});