我对 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 和测试的新手,如果我的代码不太好,我很抱歉。谢谢你的帮助!