Skip to content

Instantly share code, notes, and snippets.

@AlexandrHoroshih
Last active January 7, 2022 16:47
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AlexandrHoroshih/c4da0d9a0f6c33e04d06486261f82986 to your computer and use it in GitHub Desktop.
Save AlexandrHoroshih/c4da0d9a0f6c33e04d06486261f82986 to your computer and use it in GitHub Desktop.
test('stuff', async () => {
// форкаем домен, создаем новый независимый скоуп
const scope = fork(root, {
// в конфиге форка будут модификации, которые применятся к скоупу
values: new Map()
.set($myStore, value), // подменили стартовое значение стора эксклюзивно для этого скоупа
handlers: new Map()
.set(myFx, mockHandler) // подменили хэндлер эффекта эксклюзивно для этого скоупа
});
// запускаем эвент или эффект - триггер цепочки вычислений, которую хотим протестить.
// запускаем в рамках независимого скоупа - для этого передаем скоуп в конфиг
await allSettled(startEvent, {
scope,
params: // параметр стартового эвента
})
// запускаем проверки, после того как вычисления в сторах закончились
expect(scope.getState($myStore)).toEqual(...)
})
@AlexandrHoroshih
Copy link
Author

AlexandrHoroshih commented Sep 2, 2021

Начиная с effector@22.0.0 root-домен не нужен
Можно просто:

const scope = fork() // или fork({ values: ..., handlers: ... })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment