Как выкинуть ошибку в асин c функции в шутку - PullRequest
0 голосов
/ 24 января 2020

Как проверить, выдает ли функция createTempUsageStatisticsTable(athenaExpress) ошибку, а также проверить, выдает ли createTempUsageStatisticsTable(athenaExpress) ошибку, потому что функция athenaExpress.query(athenaQueryParam) выдает ошибку (используя Jest)? (Предположим, что имя файла index.js)

async function createTempUsageStatisticsTable(athenaExpress) {
  let athenaQueryParam = {
      sql: getSqlQueries.CREATE_DEVICE_USAGE_STATS_TEMP_TABLE_QUERY,
      db: "testdb"
  };
      await athenaExpress.query(athenaQueryParam);
}
exportFunctions={createTempUsageStatisticsTable:createTempUsageStatisticsTable}

module.exports=exportFunctions

Теперь я хочу написать тест для проверки, если createTempUsageStatisticsTable(athenaExpress) выдает ошибку, когда athenaExpress.query(athenaQueryParam) выдает ошибку или отклоняет обещание в фиктивной реализации какой бы ни подходил или работает, так что я сделал

    const confError = new Error('network error');
    athenaExpress.query = jest.fn().mockImplementationOnce(() => {
        throw new Error(confError);    // tried this 
        promise.reject(confError);
    })
    index.configureAthenaExpress();
    expect(index.configureAthenaExpress).toThrow();

Однако тесты, кажется, не проходят, пожалуйста, помогите

Благодаря Джеймсу, я получил это работает, Однако я немного подправил его код, как я был получая некоторую ошибку из-за строгого равенства, код выглядит следующим образом:

test("createTempUsageStatisticsTable throws an exception if 
    athenaExpress.query fails()", async () => {

    const creaError=new Error("network error")
    athenaExpress=configureAthenaExpress();
    athenaExpress.query.mockRejectedValueOnce(creaError);
    await expect(createTempUsageStatisticsTable(athenaExpress)).rejects.toBe(creaError);
  });

1 Ответ

1 голос
/ 25 января 2020

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

const createTempUsageStatisticsTable = require("./createTempUsageStatisticsTable");
const athenaExpress = require("./athenaExpress");

jest.mock("./athenaExpress");

test("createTempUsageStatisticsTable throws if query fails", async () => {
  athenaExpress.query.mockRejectedValueOnce(new Error("network error"));
  await expect(createTempUsageStatisticsTable(athenaExpress)).rejects.toMatchObject({ message: "network error" });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...