моя функция ajax как-то не покрыта Стамбулом - PullRequest
0 голосов
/ 03 июля 2018

У меня есть вопрос У меня есть эта функция

    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();
});

каким-то образом этот модульный тест работает, как я ожидал, но покрытие кода говорит, что утверждение не покрыто

это говорит, что заявление не распространяется

this says statement is not covered

насколько я понимаю, мой код работает нормально, а модульный тест работает, как и ожидалось, почему в шутливом коде говорится, что это утверждение не охвачено, кто-нибудь может объяснить, как работает это заявление? и почему мое не покрыто, я считаю, что это моя вина, но я не знаю, что здесь расследовать

1 Ответ

0 голосов
/ 10 ноября 2018

Вы звоните 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
  });
});
...