Здесь есть несколько вопросов:
-
toEqual
сопоставитель получает параметр с одним значением; вы отправляете 2
параметры, поэтому эффективно используется только первый.
-
client
в этом случае является функцией, и вы пытаетесь сравнить ее со строкой. Независимо от того, что клиент не является строкой, в вашем случае это также undefined
, поэтому появляется сообщение «Ожидается неопределенная, но полученная строка». Вы не тестируете пространство или accessToken здесь, вы тестируете клиент.
Я не совсем уверен, что вы пытаетесь проверить здесь, но это не имеет никакого отношения к Contentful.
Я предполагаю, что часть инициализации клиента находится где-то в коде, который вы хотите выполнить модульным тестом (а не инициализирован в тестовом файле). Я предлагаю тест, который проверяет, что функция createClient
contentful
вызывается с ожидаемыми параметрами при выполнении вашего кода; нет необходимости проверять, что клиент создан - это ответственность Contentful, чтобы убедиться, что он возвращает действительный объект client. Важно то, что вы передаете правильные параметры «space» и «accessToken», необходимые для вашего приложения.
Вообще говоря, внешние службы должны быть подвергнуты насмешке, и вам следует проверять только свою собственную логику и взаимодействие с внешними службами.
Пример
Для простоты предположим, что код, который инициализирует ваш клиент, выглядит следующим образом:
//client.js
var contentful = require('contentful')
export default function initializeClient() {
var client = contentful.createClient({
space: 'w20789877', // whatever the space id is
accessToken: '883829200101001047474747737' // some accessToken
});
}
Тест может выглядеть примерно так:
//client.test.js
describe('contentful client', () => {
let contentful;
let initializeClient;
beforeEach(() => {
jest.mock('contentful');
contentful = require('contentful');
initializeClient = require('./client').default;
});
it('should initialize the contentful client with the correct params', async () => {
initializeClient();
expect(contentful.createClient).toHaveBeenCalledWith({
space: 'w20789877',
accessToken: '883829200101001047474747737'
});
});
});
Примечание : Я не запускал и не тестировал приведенный выше код, но это общая концепция.