मैंने अभी तक यूनिट-टेस्टिंग के साथ शुरुआत की है, और मैं अपनी सेवाओं और कुछ कोणीय और आयनिक के साथ नकल करने में सक्षम हूं, लेकिन कोई फर्क नहीं पड़ता कि मैं क्या करता हूं ChangeDetectorRef
वही।कोणीय 2: यूनिट परीक्षण
मेरा मतलब है कि यह किस प्रकार की जादुई है?
beforeEach(async(() =>
TestBed.configureTestingModule({
declarations: [MyComponent],
providers: [
Form, DomController, ToastController, AlertController,
PopoverController,
{provide: Platform, useClass: PlatformMock},
{
provide: NavParams,
useValue: new NavParams({data: new PageData().Data})
},
{provide: ChangeDetectorRef, useClass: ChangeDetectorRefMock}
],
imports: [
FormsModule,
ReactiveFormsModule,
IonicModule
],
})
.overrideComponent(MyComponent, {
set: {
providers: [
{provide: ChangeDetectorRef, useClass: ChangeDetectorRefMock},
],
viewProviders: [
{provide: ChangeDetectorRef, useClass: ChangeDetectorRefMock},
]
}
})
.compileComponents()
.then(() => {
let fixture = TestBed.createComponent(MyComponent);
let cmp = fixture.debugElement.componentInstance;
let cdRef = fixture.debugElement.injector.get(ChangeDetectorRef);
console.log(cdRef); // logs ChangeDetectorRefMock
console.log(cmp.cdRef); // logs ChangeDetectorRef , why ??
})
));
it('fails no matter what', async(() => {
spyOn(cdRef, 'markForCheck');
spyOn(cmp.cdRef, 'markForCheck');
cmp.ngOnInit();
expect(cdRef.markForCheck).toHaveBeenCalled(); // fail, why ??
expect(cmp.cdRef.markForCheck).toHaveBeenCalled(); // success
console.log(cdRef); // logs ChangeDetectorRefMock
console.log(cmp.cdRef); // logs ChangeDetectorRef , why ??
}));
@Component({
...
})
export class MyComponent {
constructor(private cdRef: ChangeDetectorRef){}
ngOnInit() {
// do something
this.cdRef.markForCheck();
}
}
मैं सब कुछ कोशिश की है, async
, fakeAsync
, injector([ChangeDetectorRef],() => {})
।
कुछ भी काम नहीं करता है।
चेंजडिटेक्टर रिफ को कोणीय 2 कंपाइलर द्वारा विशेष उपचार दिया जाता है। मुझे लगता है कि आप इसे प्रदान नहीं कर सकते हैं। आप AsyncPipe https://github.com/angular/angular/blob/8f5dd1f11e6ca1888fdbd3231c06d6df00aba5cc/modules/%40angular/common/test/pipes/async_pipe_spec.ts के लिए परीक्षण की जांच कर सकते हैं। SpyChangeDetectorRef – yurzui
का उपयोग किया जाता है मैं एक ही समस्या को मार रहा हूं - कैसे क्या लोग इस के आसपास काम कर रहे हैं? – SamF