Skip to content

Commit 57ca205

Browse files
committed
Add AssertableTarget interface
1 parent 001d4ae commit 57ca205

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

src/testing-utils.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,11 +362,30 @@ export interface PassedAssertion<R, T> {
362362
assertionResult: T;
363363
}
364364

365+
/**
366+
* A more minimal, exported interface for `CallableEnvBuilder`. This makes it easier to
367+
* define helper functions in tests which expect a value of a compatible type.
368+
*/
369+
export interface AssertableTarget<R> {
370+
passes<AArgs extends readonly any[], AResult>(
371+
assertion: (val: Awaited<R>, ...assertionArgs: AArgs) => AResult,
372+
...assertionArgs: AArgs
373+
): Promise<PassedAssertion<R, AResult>>;
374+
375+
throws<ErrorType extends ErrorConstructor | Error>(
376+
t: ExecutionContext<unknown>,
377+
expectations?: ThrowsExpectation<ErrorType>,
378+
): Promise<ThrownError<ErrorType>>;
379+
}
380+
365381
class CallableEnvBuilder<
366-
Args extends readonly any[],
367-
R,
368-
Fs extends ReadonlyArray<AllState[number]>,
369-
> extends BaseEnvBuilder<Args, R, Fs> {
382+
Args extends readonly any[],
383+
R,
384+
Fs extends ReadonlyArray<AllState[number]>,
385+
>
386+
extends BaseEnvBuilder<Args, R, Fs>
387+
implements AssertableTarget<R>
388+
{
370389
private args: Args;
371390

372391
constructor(

0 commit comments

Comments
 (0)