如何在 ngrx 单元测试中更新模拟存储中的状态?

RIn*_*Ini 3 unit-testing ngrx angular

我有一个对象定义为:

obj:{
  name:"string",
  system:"string"
}
Run Code Online (Sandbox Code Playgroud)

但是我正在尝试将模拟商店中的值更新为:

store.setState({
  name:"Rose",
  system:"Updated Dummy"
});
store.refreshState();
fixture.detectChanges();
Run Code Online (Sandbox Code Playgroud)

但该值没有更新。如何更新该值,然后验证它是否已作为单元测试的一部分进行更新?

sat*_*ime 5

store.setState更新整个状态。因此,您也需要使用其功能名称来重复真实的商店结构。

const featureSelector = createFeatureSelector('FEATURE_NAME_IS_HERE');

store.setState({
  FEATURE_NAME_IS_HERE: { // <- adding the feature state.
    name:"Rose",
    system:"Updated Dummy"
  },
});
store.refreshState();
fixture.detectChanges();
Run Code Online (Sandbox Code Playgroud)

如果您使用嵌套化简器 - 那么您需要将对象嵌套到所需的子对象。