ngrx-selector-fake
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

ngrx-selector-fake

For tests where we don't want to mock/stub/spy the whole selector, only a select few dependent selectors that are not relevant for the test case/suite.

Installation

npm i --save ngrx-selector-fake

Usage

We were aiming at creating a similar experience to Jest/Jasmine Spys.

fakeSelector(object, selectorName)

Creates fake object, returns a SelectorFake. Example:

export interface State {
    flag: boolean;
    value: number;
}

export namespace FeatureStateSelectors {
    export const selectFlag = (state: State) => state.flag;

    export const selectValue = (state: State) => state.value;

    export const memoizedCalculatorSelector = createSelector(selectValue, (val: number): number => {
        return val * 2;
    });

    export const memoizedComplexSelector = createSelector(
        selectFlag,
        memoizedCalculatorSelector,
        (flag: boolean, calculated: number) => flag ? calculated : 0
    );
}

Test example:

describe("when the subselectors are partially faked", () => {
        beforeEach(() => {
            fakeSelector(FeatureStateSelectors, "memoizedComplexSelector").and.useSelectors(
                () => true, // stubbing the first dependent selector
                FeatureStateSelectors.memoizedCalculatorSelector, // using the original for the second dependent
            );
        });
        it("should get the state as faked, and calculate with that", (done) => {
            store.select(FeatureStateSelectors.memoizedComplexSelector).subscribe((val) => {
                expect(val).toBe(2);
                done();
            });
        });
    });

See more exapmles in tests

Package Sidebar

Install

npm i ngrx-selector-fake

Weekly Downloads

0

Version

0.0.2

License

MIT

Unpacked Size

13.6 kB

Total Files

11

Last publish

Collaborators

  • amdor