我有一个基本上看起来像这样的文件(缩短)
const octokit = new (require("@octokit/rest"))();
function buildRepo(name) {
fs.promises
.readFile("data/settings.json")
.then(data => JSON.parse(data))
.then(settings => settings.repositories.find(repo => repo.name === name))
.then(repo => {
let repoName = repo.url
.substring(repo.url.lastIndexOf("/") + 1)
.slice(0, -4);
let jobName = repo.name;
return octokit.repos
.get({
owner: "munhunger",
repo: repoName
})
.then(({ data }) => {
...
});
});
}
module.exports = { buildRepo };
因此,我想针对它从
octokit.repos.get
函数获取的数据的功能进行测试。但是由于该功能可以访问互联网并查看GitHub存储库,因此我想对其进行模拟。我使用茉莉花进行了一些测试,我对此进行了略微的阅读,似乎茉莉花应该可以为我模拟一下。
但是,我编写的测试似乎失败了。
const builder = require("./index");
describe("spyOn", () => {
it("spies", () => {
spyOnProperty(builder, "octokit");
builder.buildRepo("blitzbauen");
});
});
错误为
octokit property does not exist
。我在这里做错了什么?我需要将octokit
添加到module.exports
吗?(这看起来很疯狂) 最佳答案
是的,您需要将Octokit添加到module.exports
,因为您现在仅导出buildRepo
。
其他模块无法直接访问未导出模块中的任何内容,因此,如果可以访问,则应将其导出。
另外,您也许可以使用Jasmine模拟整个Octokit模块,因此可以通过任何脚本对模拟版本进行调用,但是由于我对Jasmine的经验有限,因此我不确定您将如何执行此操作
关于javascript - Jasmine spy 未找到属性(property),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58147842/