# 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.

Latest version **0.0.2** (published 2022-07-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install ngrx-selector-fake
pnpm add ngrx-selector-fake
yarn add ngrx-selector-fake
bun add ngrx-selector-fake
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.2 |
| Published | 2022-07-19 |
| First published | 2022-07-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 13.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | ZsoltD |
| Maintainers | amdor |
| Keywords | ngrx, selector, test, testing, mock, fake, partial mock, memoized |

## Links

- npm: https://www.npmjs.com/package/ngrx-selector-fake
- Repository: https://github.com/amdor/ngrx-selector-fake
- Homepage: hhttps://github.com/amdor/ngrx-selector-fake#readme
- Issues: https://github.com/amdor/ngrx-selector-fake/issues
- npm.io page: https://npm.io/package/ngrx-selector-fake

## Dependencies (1)

- [@ngrx/store](https://npm.io/package/@ngrx/store.md) ^14.0.1

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads
- [aws-elasticsearch-connector](https://npm.io/package/aws-elasticsearch-connector.md) — 37.4K weekly downloads

## Recent versions

- 0.0.2 (latest) — 2022-07-19
- 0.0.1 — 2022-07-17

## README

# 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 `Spy`s.

### `fakeSelector(object, selectorName)`
Creates fake object, returns a SelectorFake.
Example:
```typescript
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:
```typescript
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](https://github.com/amdor/ngrx-selector-fake/blob/main/test/selector-fake.spec.ts)

---
_Source: https://npm.io/package/ngrx-selector-fake · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
