Issue with Layer.mergeAll and Environment Variables in Unit Test

Have I spotted a bug, or doing it wrong? i have a unit test
it.effect('should be able to get a foobar by id', () =>
            E.gen(function* () {
                dynamodbMock
                    .reset()
                    .on(GetCommand)
                    .resolvesOnce({
                        Item: {
                            PK: mockFoobar.id,
                            ...mockFoobar,
                        },
                    })

                const foobarStore = yield* FoobarStore
                const result = yield* foobarStore.get(mockFoobar.id)

                expect(result.id).toEqual(mockFoobar.id)
                expect(result.name).toEqual(mockFoobar.name)
            }).pipe(E.provide(FoobarStore.Default), E.provide(MockConfigLayer)), // PASSES
            // }).pipe(E.provide(Layer.mergeAll(FoobarStore.Default, MockConfigLayer))) // FAILS with FOOBAR_TABLE not found
        )

when providing deps with .pipe(E.provide(FoobarStore.Default), E.provide(MockConfigLayer)) its all good but if i provide them with .pipe(E.provide(Layer.mergeAll(FoobarStore.Default, MockConfigLayer))) it fails because it cant resolve envars. the FoobarStore is a simple Effect Service that need to resolve table name, which fails if usingthe Layer.mergeAll(..).
Here is the MockConfigLayer
export const MockConfigLayer = Layer.setConfigProvider(
    ConfigProvider.fromJson({
        FOOBAR_TABLE: 'foobar-table-test',
    }),
)
Was this page helpful?