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[]>;