Я очень плохо знаком с angular & ngxs и пишу небольшой сервис сообщений, дающий возможность отправлять и получать сообщения через хранилище ngxs, подключенное к firebase.
Я пытаюсь написать тест для метода отправки сообщений. Поскольку я не очень-то согласен с официальной документацией 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 и тестировании, так что извините, если мой Код не так хорош.
Спасибо за вашу помощь!