@ngrx/store
Version:
RxJS powered Redux for Angular apps
92 lines (91 loc) • 2.78 kB
TypeScript
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';