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