жасмин шпион не нашел собственности - PullRequest
1 голос
/ 28 сентября 2019

У меня есть файл, который в основном выглядит следующим образом (сокращенно)

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? (что выглядит довольно безумно)

1 Ответ

0 голосов
/ 28 сентября 2019

Да, вам нужно добавить Octokit в module.exports, поскольку теперь вы экспортируете только buildRepo.К чему-либо из модуля, который не был экспортирован, другие модули не могут получить непосредственный доступ, поэтому, если он должен быть доступен, его следует экспортировать.

В качестве альтернативы, вы можете смоделировать весь модуль Octokit с помощью Jasmine, так чтолюбые вызовы по любому сценарию выполняются в поддельной версии, но я не уверен, как бы вы поступили так, поскольку мой опыт работы с Jasmine ограничен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...