diff --git a/modules/store/src/flags.ts b/modules/store/src/flags.ts new file mode 100644 index 0000000000..54b895b153 --- /dev/null +++ b/modules/store/src/flags.ts @@ -0,0 +1,7 @@ +let _ngrxMockEnvironment = false; +export function setNgrxMockEnvironment(value: boolean): void { + _ngrxMockEnvironment = value; +} +export function isNgrxMockEnvironment(): boolean { + return _ngrxMockEnvironment; +} diff --git a/modules/store/src/index.ts b/modules/store/src/index.ts index e5615250a5..c9ad85ea9e 100644 --- a/modules/store/src/index.ts +++ b/modules/store/src/index.ts @@ -14,6 +14,7 @@ export { export { createAction, props, union } from './action_creator'; export { Store, select } from './store'; export { combineReducers, compose, createReducerFactory } from './utils'; +export { setNgrxMockEnvironment, isNgrxMockEnvironment } from './flags'; export { ActionsSubject, INIT } from './actions_subject'; export { ReducerManager, diff --git a/modules/store/src/selector.ts b/modules/store/src/selector.ts index 0ac50d9001..5b492f7bec 100644 --- a/modules/store/src/selector.ts +++ b/modules/store/src/selector.ts @@ -1,4 +1,5 @@ import { Selector, SelectorWithProps } from './models'; +import { isNgrxMockEnvironment } from './flags'; import { isDevMode } from '@angular/core'; export type AnyFn = (...args: any[]) => any; @@ -613,7 +614,7 @@ export function createFeatureSelector( ): MemoizedSelector { return createSelector((state: any) => { const featureState = state[featureName]; - if (isDevMode() && !(featureName in state)) { + if (!isNgrxMockEnvironment() && isDevMode() && !(featureName in state)) { console.warn( `@ngrx/store: The feature name \"${featureName}\" does ` + 'not exist in the state, therefore createFeatureSelector ' + diff --git a/modules/store/testing/src/testing.ts b/modules/store/testing/src/testing.ts index 8a9000f71e..3028e6ec49 100644 --- a/modules/store/testing/src/testing.ts +++ b/modules/store/testing/src/testing.ts @@ -6,6 +6,7 @@ import { ReducerManager, StateObservable, Store, + setNgrxMockEnvironment, } from '@ngrx/store'; import { MockStore } from './mock_store'; import { MockReducerManager } from './mock_reducer_manager'; @@ -20,6 +21,7 @@ export interface MockStoreConfig { export function provideMockStore( config: MockStoreConfig = {} ): Provider[] { + setNgrxMockEnvironment(true); return [ ActionsSubject, MockState,