PURISTA API / @purista/core / createCommandTestHarness
Function: createCommandTestHarness()
createCommandTestHarness<
TServiceBuilder,TCommandBuilder>(serviceBuilder,commandBuilder,options?):Promise<{destroy: () =>Promise<void>;eventBridge:EventBridge;run: (input) =>Promise<{message:Readonly<Omit<{contentEncoding:"utf-8";contentType:"application/json";correlationId:string;eventName?:string;id:string;isHandledError:boolean;messageType:CommandErrorResponse;otp?:string;payload: {data?:unknown;message:string;status:StatusCode; };principalId?:string;receiver: {instanceId:string;serviceName:string;serviceTarget:string;serviceVersion:string; };sender: {instanceId:string;serviceName:string;serviceTarget:string;serviceVersion:string; };tenantId?:string;timestamp:number;traceId?:string; },"instanceId">> | {contentEncoding:string;contentType:string;correlationId:string;eventName?:string;id:string;messageType:CommandSuccessResponse;otp:string;payload:unknown;principalId?:string;receiver: {instanceId:string;serviceName:string;serviceTarget:string;serviceVersion:string; };sender: {instanceId:string;serviceName:string;serviceTarget:string;serviceVersion:string; };tenantId?:string;timestamp:number;traceId?:string; };result:Infer<InferCommandBuilderConfig<TCommandBuilder>["OutputSchema"]> |undefined; }>;service:Service<ServiceClassTypes<EmptyObject,EmptyObject>>;stubs: {eventBridge:Record<string,SinonStub<any[],any>> |undefined; }; }>
Defined in: testing/createCommandTestHarness.ts:39
Boot a real service instance and execute one command through the PURISTA runtime.
Use this helper when you want to test validation, guards, emits, and runtime wiring instead of calling the command handler directly.
Type Parameters
TServiceBuilder
TServiceBuilder extends ServiceBuilder<ServiceBuilderTypes>
TCommandBuilder
TCommandBuilder extends CommandDefinitionBuilder<any, any>
Parameters
serviceBuilder
TServiceBuilder
commandBuilder
TCommandBuilder
options?
CreateCommandTestHarnessOptions<TServiceBuilder> = ...
Returns
Promise<{ destroy: () => Promise<void>; eventBridge: EventBridge; run: (input) => Promise<{ message: Readonly<Omit<{ contentEncoding: "utf-8"; contentType: "application/json"; correlationId: string; eventName?: string; id: string; isHandledError: boolean; messageType: CommandErrorResponse; otp?: string; payload: { data?: unknown; message: string; status: StatusCode; }; principalId?: string; receiver: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; sender: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; tenantId?: string; timestamp: number; traceId?: string; }, "instanceId">> | { contentEncoding: string; contentType: string; correlationId: string; eventName?: string; id: string; messageType: CommandSuccessResponse; otp: string; payload: unknown; principalId?: string; receiver: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; sender: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; tenantId?: string; timestamp: number; traceId?: string; }; result: Infer<InferCommandBuilderConfig<TCommandBuilder>["OutputSchema"]> | undefined; }>; service: Service<ServiceClassTypes<EmptyObject, EmptyObject>>; stubs: { eventBridge: Record<string, SinonStub<any[], any>> | undefined; }; }>
