Mocha正在测试一个post函数
Mocha Testing a post function
嗯,我只是反复检查我是否犯了一些愚蠢的错误,但看起来并不是。我只想通过这个测试,但它一直给我一个超时错误。这个模块应该可以工作,它正确地发送邮件,但mocha一直在超时。
// describe('POST /api/mail', function() {
// it('should successfully send mail', function(done) {
// request(app)
// .post('/api/mail')
// .send(form)
// .expect(200)
// .end(function(err, res) {
// if (err) return done(err);
// done();
// });
// });
// });
这是正在测试的实际功能
'use strict';
var transporter = require('./transporter.js').transporter;
exports.sendMail = function(req, res){
// setup e-mail data with unicode symbols
var mailOptions = {
from: req.body.name + ' <'+req.body.email+'>',
to: 'test@gmail.com',
subject: req.body.subject,
text: req.body.message
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function(err, info){
if(err){
res.status(400); //error
}else{
res.status(200); //success
}
});
};
我想Mocha在等待回调的sendMail结果。我在一个应用程序中有一个类似的sendMail,使用nodemailer.js:
function send(fr, to, sj, msg, callback){
//...
var transport = nodemailer.createTransport();
console.log("Message content: "+msg);
transport.sendMail({from:fr, to:to, subject: sj, text: "'r'n'r'n" + msg},
function(err,response){
if(err){
callback(err);
}else{
callback(response);
}
});
};
在我的测试中:
describe('when this example is tested',function(done){
it('should be sending an email', function(done){
mailSender.sendMail('test@test.es', 'Test', 'Test text', function(sent){
sent.should.be.ok;
done();
});
});
您在回调中收到send,然后Mocha可以到达done()方法来指示测试已经完成。
此外,您还可以使用Supertest来测试您的端点。应该是这样的:
it('should return 200 on /api/mail', function(done) {
supertest('http://localhost:3000').post('/api/mail').expect(200)
.end(
function(err, res) {
if (err) {
return done(err);
}
done();
});
});
相关文章:
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 如果语句基于 return if 一个 $.post 命令
- Jquery:如何不允许下一个 $.post(),直到解决前一个
- jQuery File Upload插件如何将文件上传到服务器——每个文件都在一个POST请求中,或者全部在一个请求中
- Mocha正在测试一个post函数
- 一键提交GET表单和另一个POST表单
- 在表单操作之前先发一个$.post
- JQuery:在链接被关注之前执行一个post
- ExpressNodejs-如何将request.files传递到另一个POST请求
- Ajax发送一个get-to-original页面,而不是一个post-to-different页面
- 为什么我不能通过AngularJS's post发送一个post到我的WebApi ?
- Ajax:第一个Post很棒,第二个Post返回URL中的数据
- 添加一个POST参数到fb:login按钮
- 显示一个下拉列表的选定值在一个文本字段(javascript)在一个post wordpress
- 在jQuery中获取URL并创建一个post link ajax
- 三个文本输入到一个POST名称
- 提交一个post请求与json数据和rest服务将生成excel文件,并通过流返回
- 如何让骨干模型做一个POST对fetch
- 如何使一个POST与ajax就像表单提交
- 下载一个文件发送响应一个POST请求通过nodejs?(没有AJAX)