如何使用ngRedux测试服务

时间:2017-05-25 13:23:00

标签: angular typescript jasmine karma-jasmine angular2-services

如何模拟ngRedux的getState:使用karma jasmine

例如,我的服务通过ngRedux从商店获取价值。

this.ngRedux.getState()

1 个答案:

答案 0 :(得分:1)

我通过监视getState()方法解决了这个问题:

spyOn(MockNgRedux.getInstance(), 'getState').and.returnValue({ ... });

我不知道这是不是这样做,但它在我的情况下起作用。但是,我不需要模拟任何奇特的状态修改,只需要一个简单的getState()。

MockNgRedux@angular-redux/store模块的一部分。你的测试看起来有点像这样:

...
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);
    });
});

这是指向文档的链接:https://angular-redux.github.io/store/classes/mockngredux.html