如何为 AWS SQS 编写 mocha 单元测试?
How can I write a mocha unit test for an AWS SQS?
我的代码是:
const validateFile = function(file) {
// DoStuff
}
const validatorConsumer = Consumer.create({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage: (message, done) => {
return FileLib.downloadFromBucket(message)
.then(validateFile)
.then(done)
}
})
我正在使用 npm
的 sqs-consumer
包。如何编写单元测试以查看其是否有效?
我假设您想对 handleMessage
函数进行单元测试。
如果您在单独的节点模块中定义函数,则可以 require
在您的单元测试以及创建使用者的生产代码中使用它。在您的测试中,您只需传递一条手动创建的消息,该消息可能会出现在队列中,并传递一个用于您进行测试断言的 done
回调的自定义函数。
// messageHandler.js
module.export = function(message, done) {
// message handler code...
return FileLib.downloadFromBucket(message)
.then(validateFile)
.then(done)
}
}
// main.js
const messageHandler = require('./messageHandler');
const validatorConsumer = Consumer.create({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage: messageHandler
})
// messageHandler.test.js
const messageHandler = require('./messageHandler');
const message = '...' // create a sample message here
it('handles message correctly', done => {
messageHandler(message, result => {
// assertions go here...
done();
})
});
我的代码是:
const validateFile = function(file) {
// DoStuff
}
const validatorConsumer = Consumer.create({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage: (message, done) => {
return FileLib.downloadFromBucket(message)
.then(validateFile)
.then(done)
}
})
我正在使用 npm
的 sqs-consumer
包。如何编写单元测试以查看其是否有效?
我假设您想对 handleMessage
函数进行单元测试。
如果您在单独的节点模块中定义函数,则可以 require
在您的单元测试以及创建使用者的生产代码中使用它。在您的测试中,您只需传递一条手动创建的消息,该消息可能会出现在队列中,并传递一个用于您进行测试断言的 done
回调的自定义函数。
// messageHandler.js
module.export = function(message, done) {
// message handler code...
return FileLib.downloadFromBucket(message)
.then(validateFile)
.then(done)
}
}
// main.js
const messageHandler = require('./messageHandler');
const validatorConsumer = Consumer.create({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage: messageHandler
})
// messageHandler.test.js
const messageHandler = require('./messageHandler');
const message = '...' // create a sample message here
it('handles message correctly', done => {
messageHandler(message, result => {
// assertions go here...
done();
})
});