mockCondition
Стабильный · с 0.1.0
Метод TestRuntime, возвращаемого createTestRuntime. Регистрирует условие для триггера, принимая либо статическое значение, либо геттер без аргументов.
mockCondition — тестовый аналог useCondition: тот же механизм регистрации, без React.
import { createTestRuntime } from '@triggery/testing';
const rt = createTestRuntime();
rt.mockCondition(/* ... */);Сигнатура
Заголовок раздела «Сигнатура»mockCondition<S extends TriggerSchema, K extends ConditionKey<S>>(
trigger: Trigger<S>,
name: K,
valueOrGetter: ConditionMap<S>[K] | (() => ConditionMap<S>[K]),
): RegistrationToken;Параметры
Заголовок раздела «Параметры»| Параметр | Тип | Описание |
|---|---|---|
trigger | Trigger<S> | Триггер, чьё условие подменяешь. |
name | K extends ConditionKey<S> | Условие, объявленное в схеме триггера. |
valueOrGetter | T | (() => T) | Либо статическое значение (захваченное замыканием), либо геттер без аргументов. |
Возвращает
Заголовок раздела «Возвращает»RegistrationToken со { unregister(): void }. Вызови unregister(), чтобы сбросить подмена — полезно для смены условий по ходу теста.
Примеры
Заголовок раздела «Примеры»Статическое значение
Заголовок раздела «Статическое значение»import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
const t const t: Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>
= createTrigger createTrigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>(config: CreateTriggerConfig<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>, runtime?: Runtime): Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
ping: void;
}
: { ping ping: void : void };
conditions conditions: {
user: {
id: string;
} | null;
}
: { user user: {
id: string;
} | null
: { id id: string : string } | null };
}>(
{
id id: string : 'demo',
events events: readonly "ping"[] : ['ping'],
handler handler: TriggerHandler<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}, never>
() {},
},
rt const rt: TestRuntime ,
);
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}, "user">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>, name: "user", valueOrGetter: {
id: string;
} | (() => {
id: string;
} | null) | null): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>
, 'user', { id id: string : 'u-1' });Динамический геттер (читать свежий стейт на каждом fire)
Заголовок раздела «Динамический геттер (читать свежий стейт на каждом fire)»import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
const t const t: Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>
= createTrigger createTrigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>(config: CreateTriggerConfig<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>, runtime?: Runtime): Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
tick: void;
}
: { tick tick: void : void };
conditions conditions: {
counter: number;
}
: { counter counter: number : number };
}>(
{
id id: string : 'demo',
events events: readonly "tick"[] : ['tick'],
handler handler: TriggerHandler<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}, never>
() {},
},
rt const rt: TestRuntime ,
);
let counter let counter: number = 0;
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}, "counter">(trigger: Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>, name: "counter", valueOrGetter: number | (() => number)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>
, 'counter', () => counter let counter: number );
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('tick'); // handler sees counter=0
counter let counter: number = 5;
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('tick'); // handler sees counter=5Подмена по ходу теста
Заголовок раздела «Подмена по ходу теста»import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
const t const t: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
= createTrigger createTrigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>(config: CreateTriggerConfig<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>, runtime?: Runtime): Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
ping: void;
}
: { ping ping: void : void };
conditions conditions: {
flag: boolean;
}
: { flag flag: boolean : boolean };
}>(
{ id id: string : 'demo', events events: readonly "ping"[] : ['ping'], handler handler: TriggerHandler<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}, never>
() {} },
rt const rt: TestRuntime ,
);
const off const off: RegistrationToken = rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}, "flag">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>, name: "flag", valueOrGetter: boolean | (() => boolean)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
, 'flag', true);
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('ping'); // handler sees flag=true
off const off: RegistrationToken .unregister function unregister(): voidIdempotent unregister. ();
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}, "flag">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>, name: "flag", valueOrGetter: boolean | (() => boolean)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
, 'flag', false);
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('ping'); // handler sees flag=falseУсловие с функциональным типом требует явный геттер
Заголовок раздела «Условие с функциональным типом требует явный геттер»Когда значение условия — это функция без аргументов, эвристика может ошибочно принять её за геттер. Передавай явный геттер:
import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
type Callback type Callback = () => void = () => void;
const t const t: Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>
= createTrigger createTrigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>(config: CreateTriggerConfig<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>, runtime?: Runtime): Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
ping: void;
}
: { ping ping: void : void };
conditions conditions: {
onTick: Callback;
}
: { onTick onTick: Callback : Callback type Callback = () => void };
}>(
{ id id: string : 'demo', events events: readonly "ping"[] : ['ping'], handler handler: TriggerHandler<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}, never>
() {} },
rt const rt: TestRuntime ,
);
const cb const cb: Callback : Callback type Callback = () => void = () => console var console: Console .log Console.log(...data: any[]): voidThe **`console.log()`** static method outputs a message to the console.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/console/log_static) ('tick');
// Wrap in a getter so the runtime stores `cb`, not the result of calling cb.
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}, "onTick">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>, name: "onTick", valueOrGetter: Callback | (() => Callback)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>
, 'onTick', () => cb const cb: Callback );Замечания
Заголовок раздела «Замечания»См. также
Заголовок раздела «См. также» createTestRuntime Рантайм, который предоставляет этот метод.
mockAction Подменить действие — вторая половина тестовой обвязки.
useCondition Рантайм-аналог в React.
Руководство по тестированию Trigger-first паттерны тестов.