【发布时间】:2017-08-09 17:32:18
【问题描述】:
在我的流星应用程序中,我正在通过测试我正在使用的所有方法进行一些单元测试。我正在做这样的测试(mocha/chai):
describe('postMessage', () => {
it('should add message', (done) => {
// EXECUTE
const messageId = postMessage.call({ articleId: 123, content: 'Message text' })
// VERIFY
const message = Messenger.findOne(messageId) // get data from mongoDB
expect(message.content).to.equal('Message text') // check for message
expect(message.articleId).to.be.equal(123) // check for articleId
done()
})
})
但是这样只测试了一部分,即将消息存储到数据库。但是我还要测试写消息并提交(模糊事件)是否会调用这个方法。
这就是我的组件的样子。我需要知道如何对此组件进行测试。所以在这个例子中,我需要测试是否在 textarea 元素的 blur 事件上调用方法 postMessage 以及 result 的状态值是否获取 ID。我该怎么做?
组件
class Message extends Component {
addPost (articleId, event) {
const content = event.target.value
postMessage.call(
{ content, articleId },
(error, result) => {
if (error) console.warn(error)
if (result) this.setState({ result })
}
)
}
render () {
return (
<Form>
<TextArea onBlur={this.addPost.bind(this, articleId)} />
</Form>
)
}
}
方法
const postMessage = new ValidatedMethod({
name: 'messenger.insert',
validate: null,
run ({ articleId, content }) {
return Communicator.insert({ content, articleId })
}
})
【问题讨论】:
标签: javascript reactjs unit-testing meteor chai