Изящно выкидывать ошибки в микросервис и тест - PullRequest
0 голосов
/ 12 марта 2020

Я тестирую свои микросервисы, чтобы увидеть, изящно ли они выдают ошибки от источника к клиенту. И мои тесты ожидают выдачи ошибки, но я проверяю, как правильно проверить это. У меня возникли некоторые проблемы с использованием Ax ios и Asyn c Ошибка ожидания / обещания. Как я могу правильно проверить это? только через коды состояния и тело ответа?

Вот мой клиент: Мои приемочные тесты За исключением ошибки

  it("Verify Throws Exception", async () => {
    const shouldThrowError = await ApiHelper.makeAxiosCall({
      badData,
    });
    expect(shouldThrowError).toThrow(new Error("Bad Request"));
    expect(shouldThrowError).toBe(400); // Can I test for this to?
  }, 10000);

ApiHelper

export async function updateData({
badData
}) {
  let result = null;
  result = await axios({
    method: "POST",
    url: `${process.env.MICRO_B_URL}/api/users`,
    data: {
      badData,
    },
  })
    .then(({ data }) => data.data)
    .catch(err => {
      throw err;
    });

  return result

My Aggregator Service

export async function makeAnotherRestCall(
  req: any,
  res: Response,
  next: NextFunction,
) {
  const { badData } = req.body;
  const hasBadData = validateData(badData)
  if(hasBadData) throw new Error("Bad Request")


  return res.status(200).json({
    data,
  });

У меня есть промежуточное ПО для форматирования ошибок, например

export const handleError = (error: any, res: any, next: NextFunction) => {
  return res.status(error.status || 500).json({
    error: {
      status: error.status || 500,
      message: error.message || "Internal Server Error",
      stack: error.stack,
    },
  });
};
...