---
title: "Référence d'API — @nodefony/realtime/testing"
source: docs/api/realtime/testing.md
url: https://nodefony.github.io/nodefony-core/docs/api/realtime/testing/
---


[Documentation](../../../) › [Référence d'API](../../) › [`@nodefony/realtime`](../) › testing

> Générée depuis les déclarations de types publiées de `@nodefony/realtime` **10.0.0-beta.6** : exactement ce que reçoit une application qui l'installe. Cette page n'existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

## `@nodefony/realtime/testing`

`import { … } from "@nodefony/realtime/testing"` — 11 symboles.

### Fonctions (2)

#### `createRealtimeHarness`

```ts
function createRealtimeHarness<C extends RealtimeController>(create: (context: ContextType) => C, options?: IRealtimeHarnessOptions): IRealtimeHarness<C>
```

Monte un controller temps réel sur une fausse connexion et rend de quoi le piloter.

#### `runBackplaneConformance`

```ts
function runBackplaneConformance(name: string, makePeer: BackplanePeerFactory, options: IBackplaneConformanceOptions): void
```

Déclare la suite de conformité d'un driver de backplane auprès du lanceur de tests de l'appelant.

### Constantes (1)

#### `BACKPLANE_CONFORMANCE_CASES`

```ts
const BACKPLANE_CONFORMANCE_CASES: { readonly fanout: "diffusion : chaque pair reçoit TOUT, l'émetteur ne reçoit pas son écho"; readonly order: "ordre par émetteur : les publications d'un pair arrivent dans l'ordre"; readonly noReplay: "pas de rejeu : un pair démarré après une publication ne la reçoit pas"; readonly seal: "sceau : un message non scellé ou mal scellé est refusé"; readonly control: …
```

Noms des cas — stables : un test négatif les désigne.

### Interfaces (6)

#### `IBackplaneConformanceOptions`

```ts
interface IBackplaneConformanceOptions extends IConformanceRunner
```

Réglages de `runBackplaneConformance`.

- `sealed?: boolean` — Le driver scelle-t-il ses messages (`sealBackplaneEnvelope`) ?
- `quietMs?: number` — Silence attendu, en millisecondes, avant de conclure qu'un message n'arrivera PAS (refus, rejeu, écho).
- `timeoutMs?: number` — Délai maximal d'arrivée d'un message attendu, en millisecondes.

#### `IConformanceRunner`

```ts
interface IConformanceRunner
```

Lanceur de tests de l'appelant — le sous-ensemble que la suite emploie.

- `describe(name: string, body: () => void): unknown` — Ouvre un groupe de cas.
- `it(name: string, body: () => Promise<void>): unknown` — Déclare un cas asynchrone ; un rejet le fait échouer.

#### `IHarnessClose`

```ts
interface IHarnessClose
```

Fermeture demandée par le serveur (code RFC 6455 + raison).

- `readonly code?: number`
- `readonly reason?: string`

#### `IRealtimeFrame`

```ts
interface IRealtimeFrame
```

Frame JSON-RPC 2.0 telle qu'elle circule sur la socket, dans les deux sens.

- `readonly jsonrpc?: string`
- `readonly id?: number | string`
- `readonly method?: string`
- `readonly params?: unknown`
- `readonly result?: unknown`
- `readonly error?: { code: number; message: string; data?: unknown; }`

#### `IRealtimeHarness`

```ts
interface IRealtimeHarness<C extends RealtimeController>
```

Vue de test d'un controller temps réel connecté : ce qu'il a reçu, ce qu'il a émis, et de quoi le piloter frame par frame.

- `readonly controller: C` — L'instance éprouvée, du type rendu par la fabrique.
- `readonly hub: RealtimeHub` — Le hub du process — pour poser une politique de canal ou lire une sonde.
- `readonly received: readonly IRealtimeFrame[]` — Toutes les frames sorties, dans l'ordre d'émission.
- `readonly closes: readonly IHarnessClose[]` — Les fermetures demandées par le serveur (un refus d'Origin y laisse 4003).
- `readonly notices: readonly string[]` — Les avertissements de plateforme émis DEPUIS le handshake — dont celui qui dit qu'un canal servi dynamiquement ne porte aucune politique.
- `connect(): Promise<IRealtimeFrame>` — Ouvre la socket (message `null` → `realtime:welcome`).
- `subscribe(channel: string): Promise<void>` — Demande un canal, comme le ferait un client, et attend la réponse du serveur (acquittement `realtime:subscribed` ou refus `realtime:denied`).
- `unsubscribe(channel: string): Promise<void>` — Rend un canal — le provider est disposé au dernier abonné.
- `call<T = unknown>(method: string, params?: unknown): Promise<T>` — Appelle une action (requête → réponse), appariée par identifiant.
- `notify(method: string, params?: unknown): Promise<void>` — Envoie une notification cliente (plein-duplex entrant).
- `send(frame: Record<string, unknown>): Promise<void>` — Injecte une frame brute — pour éprouver un protocole malformé.
- `messages(channel: string): readonly unknown[]` — Les charges utiles reçues sur un canal, dans l'ordre.
- `denials(): readonly IHarnessDenied[]` — Les refus d'abonnement notifiés (`realtime:denied`).
- `subscriptions(): readonly string[]` — Les canaux dont l'abonnement a été acquitté (`realtime:subscribed`), dans l'ordre.
- `close(): void` — Ferme la socket côté client : la base dispose alors tous ses providers.
- `dispose(): void` — `close()` puis remise à zéro du hub.

#### `IRealtimeHarnessOptions`

```ts
interface IRealtimeHarnessOptions
```

Écart au décor par défaut du harnais.

- `readonly url?: string` — URL de la connexion, telle que la verraient les matchers d'authenticator (seam #3).
- `readonly origin?: string` — `Origin` du handshake — ce que juge la politique CSRF (seam #4).
- `readonly headers?: Record<string, string>` — En-têtes de la requête d'upgrade.
- `readonly cookies?: Record<string, { value: string; }>` — Cookies de la requête d'upgrade, à la forme du contexte HTTP.
- `readonly identity?: IRealtimeToken` — Identité posée au handshake (seam #2).
- `readonly frameAuthorizer?: FrameAuthorizer` — Verrou de frame (seam #1).
- `readonly resetHub?: boolean` — Remet le hub à zéro à la création (défaut `true`).
- `readonly admissions?: readonly IChannelAdmission[]` — Les classes d'admission du controller (`@RealtimeChannel(nom, { allow: MaClasse })`), déjà construites avec leurs services.

### Types (2)

#### `BackplanePeerFactory`

```ts
type BackplanePeerFactory = (secret: string | null) => IBackplane | Promise<IBackplane>
```

Fabrique d'un pair du driver, relié au MÊME bus que les autres pairs de la suite.

#### `IHarnessDenied`

```ts
type IHarnessDenied = Readonly<IRealtimeDenied>
```

Refus d'abonnement notifié au client (`realtime:denied`) — le contrat de protocole lui-même, en lecture seule. Le recopier ici le ferait diverger : un motif ajouté au protocole doit apparaître dans le banc sans qu'on y pense.

---

[← Toutes les références d'API](../../)
