Angular NGRX-减速器和选择器之间的测试关联

Angular NGRX-减速器和选择器之间的测试关联,angular,unit-testing,jasmine,ngrx,Angular,Unit Testing,Jasmine,Ngrx,我做了一个重复数据消除功能,以避免在使用新负载调用reducer后,当存储实际上没有更改时,存储中的选择器会“醒来” 这个想法是: 在Reducer函数中,检查正在调度的有效负载是否已经存在,并且是否等于存储状态中的数据 如果它们相等==>则返回相同的状态(通过引用) 如果没有,则==>返回一个新更新的状态(重复数据消除功能之前总是这样) 看起来像这样: function getDiffBetweenStateAndPayload(newPayload: Person[], state:

我做了一个重复数据消除功能,以避免在使用新负载调用reducer后,当存储实际上没有更改时,存储中的选择器会“醒来”

这个想法是: 在Reducer函数中,检查正在调度的有效负载是否已经存在,并且是否等于存储状态中的数据

如果它们相等==>则返回相同的状态(通过引用)

如果没有,则==>返回一个新更新的状态(重复数据消除功能之前总是这样)

看起来像这样:

    function getDiffBetweenStateAndPayload(newPayload: Person[], state: PersonState): Person[] {
      const entities: Dictionary<Person> = PersonState.entities;
      const updatesForStore: Person[] = [];
    
      for (const artifact of newPayload) {
          if (artifact.artifactId in entities) {
              if (!_.isEqual(artifact, entities[artifact.artifactId])) {
                  updatesForStore.push(artifact);
              }
          } else {
            updatesForStore.push(artifact);
          }
      }
    
      return updatesForStore;
   }

函数getDiffBeweeInstallandPayload(新负载:Person[],状态:PersonState):Person[]{
常量实体:Dictionary=PersonState.entities;
const updatesForStore:Person[]=[];
for(newPayload的常量工件){
if(实体中的artifact.artifactId){
if(!.isEqual(工件,实体[artifact.artifactId])){
updatesForStore.push(工件);
}
}否则{
updatesForStore.push(工件);
}
}
返回updatesForStore;
}
现在,这段代码运行良好。我考试有困难。在测试中,我想订阅一个选择器,然后使用相同的负载调用reducer两次,并确保只发出一次可观测值(第一次调用reducer)

有什么想法吗