1

テストには 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 はまったく出力を生成しません。

このテストを期待どおりに失敗させるにはどうすればよいですか?

4

1 に答える 1

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();
      });
  });
于 2013-12-03T13:53:36.840 に答える