Пересмешивание данных из MongoDB для удовлетворения TypeScript в Jest - PullRequest
0 голосов
/ 06 июня 2019

Я создаю интерфейс TypeScript для каждой модели, расширяющий mongoose.Document.

import mongoose, { Document } from 'mongoose';

export interface IAccount extends Document {
  _id: mongoose.Types.ObjectId;
  name: string;
  industry: string;
}

Схема затем экспортируется с интерфейсом:

export default mongoose.model<IAccount>('Account', accountSchema);

Проблема в том, что в Jest создание объекта со свойствами, необходимыми для тестируемой функции, недостаточно, TypeScript жалуется на все пропущенные поля.

function getData(account: IAccount){
  return account;
}

const account = {
  name: 'Test account name',
  industry: 'test account industry'
}

getData(account);

Аргумент типа '{имя: строка; промышленность: строка; } 'нельзя назначить параметру типа' IAccount '. Тип '{имя: строка; промышленность: строка; } 'отсутствуют следующие свойства из типа' IAccount ': _id, increment, model и еще 52.ts (2345)

Какой самый простой способ создать объект, который удовлетворяет требованиям TypeScript для тестирования?

1 Ответ

0 голосов
/ 08 июня 2019

Один из вариантов - создать макет, который соответствует ожидаемому типу ...

... но это может быть очень сложно для очень сложных типов.

Другой вариант - сообщитьTypeScript, который вы хотите, чтобы ваш макет проходил через проверку типов во время компиляции.

Вы можете сделать это, назначив макету тип any:

function getData(account: IAccount){
  return account;
}

const account: any = {  // <= use type "any"
  name: 'Test account name',
  industry: 'test account industry'
}

getData(account);  // <= no error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...