Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何侦察一个可观测的属性_Angular_Unit Testing_Observable_Karma Jasmine_Behaviorsubject - Fatal编程技术网

Angular 如何侦察一个可观测的属性

Angular 如何侦察一个可观测的属性,angular,unit-testing,observable,karma-jasmine,behaviorsubject,Angular,Unit Testing,Observable,Karma Jasmine,Behaviorsubject,我想对一个角度为10的组件进行单元测试。在组件的ngOnInit方法中,出现以下代码: this.subscriptions.push( this.myService.getDataSubject.subscribe((results) => { this.data = results; } ); 另外,在单元测试中 beforeEach(async(() => { TestBed.configureTestingModule({ p

我想对一个角度为10的组件进行单元测试。在组件的ngOnInit方法中,出现以下代码:

this.subscriptions.push(
   this.myService.getDataSubject.subscribe((results) => {
      this.data = results;
   }
);
另外,在单元测试中

beforeEach(async(() => {
    TestBed.configureTestingModule({
        providers: [MyService]
    }).compileComponents();
})
我的单元测试包括

beforeEach(() => {
    spyOnProperty(myService, 'getDataSubject', 'get').and.returnValue(of(mockData));
}
在服务本身

private dataSubject: BehaviorSubject<any> = new BehaviorSubject({});
getDataSubject = this.dataSubject.asObservable();
privatedatasubject:BehaviorSubject=newbehaviorsubject({});
getDataSubject=this.dataSubject.asObservable();
单元测试失败。我尝试了多种变体,但无法返回mockData值。当为订阅绑定到行为主体的属性的组件编写单元测试时,我应该怎么做?

更改

beforeach(()=>{spyOnProperty(myService,'getDataSubject','get')和.returnValue(of(mockData));}

监视函数而不是属性更改

beforeach(()=>{spyOnProperty(myService,'getDataSubject','get')和.returnValue(of(mockData));}


监视函数而不是属性

@PMO1948:你的建议让我走上了正确的方向。以下是我必须做的: 而不是

spyOn(myService, 'getDataSubject', 'get').and.returnValue(of(mockData));
我调用了填充private BehaviorSubject的源函数:

myService.requestData().subscribe();
然后我发现了这个函数:

spyOn(myService, 'requestData').and.returnValue(of(mockData));

因此,在我的ngOnInit中,当服务属性被订阅时,mockData将被返回。至少,我认为这是正在发生的事情,我的测试正在通过。

@PMO1948:你的建议让我走上了正确的方向。我必须做的是: 而不是

spyOn(myService, 'getDataSubject', 'get').and.returnValue(of(mockData));
我调用了填充private BehaviorSubject的源函数:

myService.requestData().subscribe();
然后我发现了这个函数:

spyOn(myService, 'requestData').and.returnValue(of(mockData));

因此,在我的ngOnInit中,当服务属性订阅到mockData时,会返回mockData。至少,我认为这就是正在发生的事情,我的测试正在通过。

该更改会导致错误消息,“string类型的参数不能分配给never类型的参数。”编辑为callFake而不是returnValue。查看该更改是否会导致错误消息,“字符串类型的参数不可分配给never类型的参数。”编辑为callFake而不是returnValue。查看该更改是否有效