Сравнить объект с классом в машинописи? - PullRequest
0 голосов
/ 22 сентября 2019

Возможно ли в машинописи сравнить данный объект с интерфейсом или классом?

Моей первой мыслью было сравнение использования typeof с интерфейсом, но это не удалось:

interface EmployeeModel {
  id?: string,
  employee_name?: string,
  employee_salary?: string,
  employee_age?: string,
  profile_image?: string,
}
const employee = response.body.pop();
if (typeof employee === EmployeeModel) {
  next();
}

Я думал преобразовать интерфейс в класс и использовать instaceof, но это также не работает:

class EmployeeModel {
  id?: string;
  employee_name?: string;
  employee_salary?: string;
  employee_age?: string;
  profile_image?: string;
}
const employee = response.body.pop();
if (employee instanceof EmployeeModel) {
  next();
}

Как я могу проверить объект ответа объекта из API, напримерэто?

1 Ответ

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

Это не самый эффективный ответ, я уверен, но используя этот пакет npm и передав throwErrorOnAlien: true в опциях, я мог успешно запустить jest с помощью вызова API и просто проверить тело ответа, передав ожидаемую карту, сгенерированную изопределение openapi / swagger (разработка, основанная на документации).

Хотя мне стыдно, я надеялся на более элегантное решение.

  it('Check body response', next => {
    try {
      objectReduceByMap(
        response.body,
        EmployeesService.employeeGetResponseFormat,
        { throwErrorOnAlien: true }
      );
      next();
    } catch (e) {
      // objectReduceByMap threw an error so alien attributes were discovered in the api response.
      // Calling next with the error so Jest stops.
      next(e);
    }
  });

https://github.com/acrontum/openapi-nodegen-typescript-api-test-rig/blob/master/README.md

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