redux-mock-store
을 사용하여 단위 테스트를 이미 구현하고 있습니다.저장소 싱글 톤을 테스트하려면 어떻게해야합니까?
저장소 싱글 톤을 잘 사용하는 반응식 응용 프로그램에서 통합 테스트를 수행하고 싶습니다. 그러나 console.log
이 감속기 기능까지 도달해도 (그리고 제대로 작동하는 것처럼 보이지만) 저장소의 상태는 변경되지 않습니다.
// __tests__/things.js
jest.mock('../app/store')
import 'react-native'
import * as selectors from '../app/selectors'
import * as sagas from '../app/sagas'
import { store } from '../app/store'
describe('Things',() => {
it('should toggle', async() => {
const previousCounter = selectors.count()
await sagas.increment()
expect(store.getState().count).toEqual(previousCounter)
})
})
한편 모의 저장 구현 :
// __mocks__
import { createStore } from 'redux'
import rootReducer from '../reducers'
export const store = createStore(rootReducer, {})
편집 : 샘플 감속기
// app/reducers.js
function rootReducer (state = { count: 0 }, action = {}) {
const count = state.count + 1
return { ...state, count }
}
모든 것이 잘 작동하지만, 상태는 변경되지 않습니다. 저장소에 가입하여 옵저버를 구현하면 작업 시리즈가 전달되는 것을 볼 수 있습니다.
감속기도 함께 보여야합니다. – zurfyx
완료, 샘플을 추가했습니다. 그러나 실제 코드베이스에서는 감속기가 예상대로 작동한다고 말합니다. 그것들은 조롱 된 싱글 톤보다는 "다른"저장소에 대한 변화를 저장하고 있기 때문입니다. – jsdario
모의 상점이 무용담과 연결되어 있지 않은 것 같습니다. 따라서'sagas.increment'를 호출해도 상점에 아무런 영향을 미치지 않습니다. –