angular - ngRedux ile servisi nasıl test edebilirim
ngRedux'in getState'ini karma jasmine ile nasıl taklit edebilirim?
Örneğin servisimin değeri store'dan ngRedux ile alması.
this.ngRedux.getState()
Cevap #1
Sorunu getState() metodunu casuslayarak çözdüm:
spyOn(MockNgRedux.getInstance(), 'getState').and.returnValue({ ... });
Bunu yapmanın yolu olup olmadığını hiç bilmiyorum, ama benim durumumda işe yaradı. Yine de herhangi bir karmaşık durum değişikliğini taklit etmeme gerek yok, sadece basit bir getState() yeterli.
MockNgRedux, @angular-redux/store modülünün bir parçasıdır. Testiniz yaklaşık olarak şöyle görünebilir:
...
import {MockNgRedux, NgReduxTestingModule} from '@angular-redux/store/lib/testing';
describe('MyTest', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
...
imports: [
...
NgReduxTestingModule
],
providers: [
...
MockNgRedux
]
})
.compileComponents();
}));
it('does something', () => {
// set up
spyOn(MockNgRedux.getInstance(), 'getState').and.returnValue({here: 'be my mock store'});
spyOn(MockNgRedux.getInstance(), 'dispatch').and.stub();
....
expect(MockNgRedux.getInstance().dispatch).toHaveBeenCalledWith(something);
});
});
İşte belgelerin bağlantısı: https://angular-redux.github.io/store/classes/mockngredux.html
