2017-05-25 104 views

回答

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

+0

是什么MockNgRedux? –

+0

我更新了答案,使其更加清晰。 – fritteli

+0

找不到模块'@ angular-redux/store/lib/testing'。你使用npm安装的任何东西为了访问这个? – Kailas