Angular 设置/更新时从全局状态提取的a字段选项 this.ruleDataFieldOption$=this.\u store.pipe(选择(getRuleDataFieldsSelector)); //加载NPI字段的GUID,用于区分不同的数据字段下拉项,以应用不同的值验证进行匹配 此.ruleDataFieldOption$.subscribe(数据字段=>{ if(ClientRulesConditionComponent.NPI_数据_字段_GUID==null){ for(让数据字段的df){ if(df.name.toLowerCase().includes('npi')| | df.name.toLowerCase().includes('national provider identifier')){ ClientRulesConditionComponent.NPI_DATA_FIELD_GUID=df.dataFieldId.toUpperCase(); 打破 } } } }); . . .
我确信这是一个小问题,我只需要通过单元测试。在每个Angular 设置/更新时从全局状态提取的a字段选项 this.ruleDataFieldOption$=this.\u store.pipe(选择(getRuleDataFieldsSelector)); //加载NPI字段的GUID,用于区分不同的数据字段下拉项,以应用不同的值验证进行匹配 此.ruleDataFieldOption$.subscribe(数据字段=>{ if(ClientRulesConditionComponent.NPI_数据_字段_GUID==null){ for(让数据字段的df){ if(df.name.toLowerCase().includes('npi')| | df.name.toLowerCase().includes('national provider identifier')){ ClientRulesConditionComponent.NPI_DATA_FIELD_GUID=df.dataFieldId.toUpperCase(); 打破 } } } }); . . .,angular,typescript,unit-testing,karma-jasmine,Angular,Typescript,Unit Testing,Karma Jasmine,我确信这是一个小问题,我只需要通过单元测试。在每个声明新的可观察的之前,在一个中尝试一下 component.ruleDataFieldOption$ = new Observable<ConditionToMatch[]>; component.ruleDataFieldOption$=新的可观察项; 我不知道是否同样的规则适用于作为主体的可观察信息本身,但你可以尝试一下。在每个声明新的可观察的之前,尝试一下这个 component.ruleDataFieldOption$ =
声明新的可观察的之前,在一个中尝试一下
component.ruleDataFieldOption$ = new Observable<ConditionToMatch[]>;
component.ruleDataFieldOption$=新的可观察项;
我不知道是否同样的规则适用于作为主体的可观察信息本身,但你可以尝试一下。在每个声明新的可观察的之前,尝试一下这个
component.ruleDataFieldOption$ = new Observable<ConditionToMatch[]>;
component.ruleDataFieldOption$=新的可观察项;
我不知道是否同样的规则也适用于可观察的it自身,但你可以尝试一下。太多的代码,但首先弹出的是spyOn(mockStore,'dispatch')
可能会返回可观察的。我同意@Head Rush,有很多代码与实际问题并不相关。但我不认为这是派遣间谍,因为这只是一个方法调用。但是,select spy不会返回一个可观察的。您需要知道,在第一个fixture.detect中,会更改调用的ngOnInit。因此,您将ruleDataField$设置为一个固定值,然后调用onInit,它将被只返回null的select spy替换。代码太多了,但首先弹出的是spyOn(mockStore,'dispatch')
应该返回一个可观察的。我同意@Head Rush,有很多代码与实际问题并不相关。但我不认为这是派遣间谍,因为这只是一个方法调用。但是,select spy不会返回一个可观察的。您需要知道,在第一个fixture.detect中,会更改调用的ngOnInit。因此,您将ruleDataField$设置为一个固定值,然后调用onInit,它将被只返回null的select spy替换。
@Component({
selector: 'nd-client-rules-condition',
templateUrl: './client-rules-condition.component.html',
styleUrls: ['./client-rules-condition.component.scss']
})
export class ClientRulesConditionComponent implements OnInit {
@Input() conditionForm: FormGroup;
@Input() indexInConditionArray: number;
@Input() submitted$: Observable<boolean>;
@Output() removeCondition: EventEmitter<number> = new EventEmitter();
conditionToMatchOption$: Observable<ConditionToMatch[]>;
valueControl: FormControl;
matchingConditionControl: FormControl;
dataFieldControl: FormControl;
private static NPI_DATA_FIELD_GUID: string;
validValuePattern: string;
invalidValueError: string;
// Emits the candidate rule fields that eventually come back from the database.
// The 'data fields' combo box in the markup is wired up to this.
ruleDataFieldOption$: Observable<RuleDataFieldDefinition[]>;
// Tracks whether the parent form has been submitted.
submitted: boolean;
constructor(private _store: Store<state.AppState>) { }
ngOnInit() {
this._store.dispatch(new GetConditionToMatchOptions(''));
// Dispatch Action that causes the rule-data-field options to get retrieved from the server and slammed into the global state.
this._store.dispatch(new GetRuleDataFieldsOptions(''));
this.conditionToMatchOption$ = this._store.pipe(select(getConditionToMatchOption));
// Wire up the selector that cause the rule-data-field options to get pulled from the global state when they are set/updated
this.ruleDataFieldOption$ = this._store.pipe(select(getRuleDataFieldsSelector));
// Load GUID for NPI field to use to distinguish between different Data Field dropdown items to apply different validation in Value To Match
this.ruleDataFieldOption$.subscribe(dataFields => {
if (ClientRulesConditionComponent.NPI_DATA_FIELD_GUID == null) {
for (let df of dataFields) {
if (df.name.toLowerCase().includes('npi') || df.name.toLowerCase().includes('national provider identifier')) {
ClientRulesConditionComponent.NPI_DATA_FIELD_GUID = df.dataFieldId.toUpperCase();
break;
}
}
}
});
.
.
.
component.ruleDataFieldOption$ = new Observable<ConditionToMatch[]>;