Để nhận được mức độ phù hợp 100% của các tệp Saga của tôi, tôi đang tìm cách kiểm tra người xem.Điểm kiểm tra đơn vị bộ theo dõi redux-saga là gì?
Tôi đã googling xung quanh, có một số câu trả lời như thế nào để kiểm tra người xem. Đó là, saga làm điều đó takeEvery
hoặc takeLatest
.
Tuy nhiên, tất cả các phương pháp thử nghiệm dường như về cơ bản sao chép triển khai. Vì vậy, điểm của việc viết một bài kiểm tra nếu nó là như nhau?
Ví dụ:
// saga.js
import { delay } from 'redux-saga'
import { takeEvery, call, put } from 'redux-saga/effects'
import { FETCH_RESULTS, FETCH_COMPLETE } from './actions'
import mockResults from './tests/results.mock'
export function* fetchResults() {
yield call(delay, 1000)
yield put({ type: FETCH_COMPLETE, mockResults })
}
export function* watchFetchResults() {
yield takeEvery(FETCH_RESULTS, fetchResults)
}
phương pháp thử nghiệm 1:
import { takeEvery } from 'redux-saga/effects'
import { watchFetchResults, fetchResults } from '../sagas'
import { FETCH_RESULTS } from '../actions'
describe('watchFetchResults()',() => {
const gen = watchFetchResults()
// exactly the same as implementation
const expected = takeEvery(FETCH_RESULTS, fetchResults)
const actual = gen.next().value
it('Should fire on FETCH_RESULTS',() => {
expect(actual).toEqual(expected)
})
})
phương pháp thử nghiệm 2: với một helper, như Redux Saga Test Plan
Đó là một cách khác nhau của văn bản, nhưng một lần nữa chúng ta làm cơ bản giống nhau khi triển khai.
import testSaga from 'redux-saga-test-plan'
import { watchFetchResults, fetchResults } from '../sagas'
import { FETCH_RESULTS } from '../actions'
it('fire on FETCH_RESULTS',() => {
testSaga(watchFetchResults)
.next()
.takeEvery(FETCH_RESULTS, fetchResults)
.finish()
.isDone()
})
Thay vào đó, tôi chỉ muốn biết nếu watchFestchResults
nhận mọi FETCH_RESULTS. Hoặc thậm chí chỉ khi nó bắn takeEvery()
. Không có vấn đề làm thế nào nó theo dõi.
Hoặc đây thực sự là cách để làm điều đó?
Yeah, tôi đang bối rối bởi điều này, quá. Các thử nghiệm mẫu là tất cả so sánh kết quả với người tạo hiệu ứng saga. Đó không phải là điều tôi quan tâm. Tôi quan tâm đến việc liệu họ có đặt cửa hàng ở trạng thái đúng hay không. Thử nghiệm bởi các ví dụ có vẻ rất giòn và không chứng minh bất cứ điều gì. –