[英]jasmine spy not finding property
我有一個基本上看起來像這樣的文件(縮短)
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
function 獲得的數據。 但是由於 function 將 go 發布到 Internet 並查看 GitHub 存儲庫,我想模擬它。
我有一些使用 jasmine 運行的測試,我稍微閱讀了一下,似乎 jasmine 應該能夠為我模擬這個。
但是,我編寫的測試似乎失敗了。
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 模塊,因此任何腳本的任何調用都會對模擬版本進行,但我不確定您是如何做到的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.