UNPKG

@ngrx/store

Version:

RxJS powered Redux for Angular apps

92 lines (91 loc) 2.78 kB
import { ExistingProvider, FactoryProvider, ValueProvider } from '@angular/core'; import { MockStore } from './mock_store'; import { MockSelector } from './mock_selector'; export interface MockStoreConfig<T> { initialState?: T; selectors?: MockSelector[]; } /** * @description * Creates mock store providers. * * @param config `MockStoreConfig<T>` to provide the values for `INITIAL_STATE` and `MOCK_SELECTORS` tokens. * By default, `initialState` and `selectors` are not defined. * @returns Mock store providers that can be used with both `TestBed.configureTestingModule` and `Injector.create`. * * @usageNotes * * **With `TestBed.configureTestingModule`** * * ```typescript * describe('Books Component', () => { * let store: MockStore; * * beforeEach(() => { * TestBed.configureTestingModule({ * providers: [ * provideMockStore({ * initialState: { books: { entities: [] } }, * selectors: [ * { selector: selectAllBooks, value: ['Book 1', 'Book 2'] }, * { selector: selectVisibleBooks, value: ['Book 1'] }, * ], * }), * ], * }); * * store = TestBed.inject(MockStore); * }); * }); * ``` * * **With `Injector.create`** * * ```typescript * describe('Counter Component', () => { * let injector: Injector; * let store: MockStore; * * beforeEach(() => { * injector = Injector.create({ * providers: [ * provideMockStore({ initialState: { counter: 0 } }), * ], * }); * store = injector.get(MockStore); * }); * }); * ``` */ export declare function provideMockStore<T = any>(config?: MockStoreConfig<T>): (ValueProvider | ExistingProvider | FactoryProvider)[]; /** * @description * Creates mock store with all necessary dependencies outside of the `TestBed`. * * @param config `MockStoreConfig<T>` to provide the values for `INITIAL_STATE` and `MOCK_SELECTORS` tokens. * By default, `initialState` and `selectors` are not defined. * @returns `MockStore<T>` * * @usageNotes * * ```typescript * describe('Books Effects', () => { * let store: MockStore; * * beforeEach(() => { * store = createMockStore({ * initialState: { books: { entities: ['Book 1', 'Book 2', 'Book 3'] } }, * selectors: [ * { selector: selectAllBooks, value: ['Book 1', 'Book 2'] }, * { selector: selectVisibleBooks, value: ['Book 1'] }, * ], * }); * }); * }); * ``` */ export declare function createMockStore<T>(config?: MockStoreConfig<T>): MockStore<T>; export { MockReducerManager } from './mock_reducer_manager'; export { MockState } from './mock_state'; export { MockStore } from './mock_store'; export { MockSelector } from './mock_selector';