Skip to content

Тестирование

SDK поставляет мок-контекст, чтобы ваши тесты использовали точно ту же форму, что и продакшен.

createMockPlatformContext

ts
import { createMockPlatformContext } from '@tv/extension-sdk/testing';
import { PlatformProvider } from '@tv/extension-sdk/react';
import { render, screen } from '@testing-library/react';
import App from './App';

test('renders the building name', () => {
  const ctx = createMockPlatformContext({
    user: { ...defaultUser, roles: ['manager'] },
    building: { id: 'b1', name: 'Demo Mall' },
  });

  render(
    <PlatformProvider value={ctx}>
      <App />
    </PlatformProvider>,
  );

  expect(screen.getByText(/Demo Mall/)).toBeInTheDocument();
});

Почему мок, а не собственная реализация

Если вы собираете PlatformContext в тестах вручную, вы можете отойти от настоящей формы — и ваши тесты проходят, пока продакшен ломается. createMockPlatformContext() построен из тех же типов, что внедряет платформа, поэтому:

  • Изменения типов поверхности контекста ломают ваши тесты на этапе компиляции (это хорошо — вы узнаёте рано).
  • Мок клиента api имеет те же сигнатуры методов, что и настоящий.

Подмена ответов API

Клиент api мока можно переопределить:

ts
const ctx = createMockPlatformContext({
  api: {
    get: vi.fn().mockResolvedValue([{ id: 's1', name: 'Unit 3B' }]),
  },
});

Чек-лист самодиагностики

Прежде чем открывать обращение в поддержку, пройдите по нему — большинство проблем решается здесь:

  1. Какая версия SDK? cat node_modules/@tv/extension-sdk/package.json | jq .version
  2. Манифест валиден? npx tv-sdk validate module-manifest.json
  3. События и разрешения в каталоге? npx tv-sdk check-events
  4. Используете символ @experimental? Просмотрите импорты — такие символы могут меняться между релизами.
  5. Сообщается ли о работоспособности (heartbeat)? Проверьте точку вашего модуля на боковой панели Building OS.
  6. Тесты используют createMockPlatformContext()?

Если все шесть пунктов чистые, а проблема остаётся — она на стороне платформы; заведите обращение с выводом чек-листа.

Создано на платформе Tango Vision. Вопросы? developers@tango.vision