1
我想實施REDX傳奇測試如下,但我遇到了一個問題。我得到的錯誤是無法讀取未定義的屬性有效載荷。我傳遞給傳奇功能的'message'var由於某種原因未定義,任何人都可以告訴我爲什麼?由於測試REDX傳奇
saga.spec.js
import test from 'tape'
import { put,take,call } from 'redux-saga/effects'
import { onCreateMessage } from '../src/common/sagas/messages'
import { addMessage,createMessage } from '../src/common/reducers/messages'
test('createMessage', assert => {
const gen = onCreateMessage()
var message = {
id: 1234,
channelID: "AA",
text: "text",
user: "user"
}
assert.deepEqual(
gen.next(message).value,
put(addMessage(message)),
'createMessage should dispatch addMessage action'
)
})
saga/index.js
export default function* rootSaga(){
yield [
takeEvery('CREATE_MESSAGE', onCreateMessage),
......
]
當我下面,我得到 '未定義'
export function* onCreateMessage(message) {
console.log(message)
yield put(addMessage(message.payload))
try {
yield call(fetch,'/api/newmessage',
{
method: 'post',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(message.payload)}
)
} catch (error){
throw error
}
}
我使用的終極版,行動actionCreator控制檯登錄消息:
export const addMessage = createAction(ADD_MESSAGE);
您必須通過takeEvery上的參數...如果沒有,請使用take effect將第一個動作放入onCreateMessage中,然後您可以通過操作獲取消息的值。 – andresmijares25