簡體   English   中英

jasmine 間諜未找到財產

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM