我正在使用Express.js和Jasmine-node进行测试。这是我的服务器代码:
var express = require('express');
var app = express();
app.get('/', function (request, response) {
response.send("Bonjour!");
});
module.exports = app;
这是测试:
var request = require('http');
var app = require('../src/app');
var server;
describe('textreader', function(){
beforeEach(function(done){
server = app.listen(3333, function (err, result) {
if (err) {
done(err);
} else {
done();
}
});
});
afterEach(function(){
server.close();
});
it('responds to /', function(){
request.get("http://localhost:3333", function(response){
console.log(response.body);
expect(response.body).toEqual('foo');
});
});
});
这是输出:
mike@sleepycat:~/projects/textreader☺ grunt
Running "jshint:files" (jshint) task
>> 3 files lint free.
Running "jasmine_node" task
textreader
responds to /
Finished in 1.218 seconds
1 test, 0 assertions, 0 failures, 0 skipped
Done, without errors.
所以显然这个测试应该失败,因为服务器只能生成文本“Bonjour!”。 其次,console.log根本不产生输出。
我需要做些什么来使此测试失败?
答案 0 :(得分:1)
您的示例与描述异步测试的jasmine-node页面上的内容很接近。
您需要添加done()
以让测试知道等待500毫秒(默认情况下)以完成事务(或显示超时错误)。您的代码看起来像这样:
it('responds to /', function(){
request.get("http://localhost:3333", function(response){
console.log(response.body);
expect(response.body).toEqual('foo');
done();
});
});