我正在尝试为redux saga实现一个测试,如下所示,但我遇到了一个问题。我得到的错误是无法读取未定义的属性有效负载。由于某种原因,我传递给saga函数的'message‘变量没有定义,有人能告诉我为什么吗?谢谢
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),
......
]当我通过控制台控制下面记录的消息时,我得到了'undefined‘
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
}
}我正在使用来自redux-actions的actionCreator:
export const addMessage = createAction(ADD_MESSAGE);发布于 2016-09-23 15:38:00
变化
const gen = onCreateMesaage()
至
const gen = onCreateMessage(message)
解释:
message是传递给生成器函数的参数,而不是yield结果。前面的代码适用于产生的结果。e.g
export function* onCreateMessage() {
const message = yield
console.log(message)
yield put(addMessage(message.payload))
}https://stackoverflow.com/questions/39291006
复制相似问题