我对angular&ngxs还是很陌生,并且正在编写一个小型消息服务,从而有机会通过连接到Firebase的ngxs存储发送和接收消息。
我正在尝试为发送消息的方法编写测试。由于我不太了解ngxs官方测试文档,因此遇到了一些问题。
因此,我目前(无效)的测试尝试是:
describe('SendMessage', () => {
let store: Store;
let testData: Message = {
author: 'testauthor',
text: 'testtext'
};
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NgxsModule.forRoot([MessageState]),
NgxsModule.forRoot([AngularFirestore])],
}).compileComponents();
store = TestBed.get(Store);
store.reset(TEST_STATE);
}));
it('sends Messages', async(() => {
store.dispatch(new fromMessage.AddMessage(testData));
store.selectOnce(state => MessageState.getSentMessages).subscribe(message => {
expect(message).toEqual(testData);
})
}))
});
TEST_STATE为
export const TEST_STATE = {
messages: [{
author: 'testauthor',
text: 'testtext'
}]
}
运行测试,出现错误Failed: States must be decorated with @State() decorator
。
如何正确使用TEST_STATE作为测试AddMessage
的状态?我的调度和选择应该如何?
正如我所说,我是ngxs和测试的新手,如果我的代码不太好,请见谅。 感谢您的帮助!
答案 0 :(得分:3)
测试平台的import语句中有两行可能会产生错误Failed: States must be decorated with @State() decorator
:
请仔细检查类MessageState
和AngularFirestore
是否用@State()
装饰。