Ведение журнала модульных тестов (используйте mocha, supertest и chai) restful API, созданного с помощью Express, node.js

Я пишу простой модульный тест с мокко, чаем и супертестом.

describe('controller.CWEManagementAPI', function () {
it('should be able to say hello', function() { 
    var request = require('supertest')
    , express = require('express');

    var app = express();

    app.get('/user', function(req, res){
        res.send(201, { name: 'tobi' });
    });

    request(app)
    .get('/user')
    .set('Accept', 'application/json')
    .expect(200)
    .end(function(err, res){
        if (err) return done(err);
        console.log('test');
        assert.equal( res.body.name, 'tobi');
        done()
    });
});
});

Но проблема в том, что console.log('test') не выполняется. Так что я думаю, что assert.equal( res.body.name, 'tobi'); тоже не выполняется. И поэтому я пишу код без модульного тестирования, например:

var request = require('supertest')
, express = require('express');

var app = express();

app.get('/user', function(req, res){
res.send(201, { name: 'tobi' });
});

request(app)
   .get('/user')
   .expect('Content-Type', /json/)
   .expect('Content-Length', '20')
   .expect(201)
   .end(function(err, res){ 
    if (err) throw err;
    console.log(res.body.name);
    console.log('done');
    process.exit();
   });

И все console.log() казнены. поэтому я не знаю, почему первый код не может отображать информацию о регистрации.


person Jimmy Zhang    schedule 15.01.2013    source источник
comment
когда вы говорите, что работаете с модульным тестированием и без него, какую команду вы используете для его запуска?   -  person Jay Kumar    schedule 15.01.2013
comment
извините, я использую мокко unittest.js для запуска модульного теста. И используйте node test.js для запуска общего файла js.   -  person Jimmy Zhang    schedule 15.01.2013
comment
it('должна быть возможность поздороваться', function() { этот код следует отредактировать it('должна быть возможность поздороваться', function(done) { . Тогда результат исключается. Поскольку эта ситуация должна использоваться с Асинхронный режим мока.   -  person Jimmy Zhang    schedule 15.01.2013
comment
ой .. кажется, вы сами догадались ... только что заметили ваш комментарий после публикации ответа .. хорошего дня   -  person Jay Kumar    schedule 15.01.2013


Ответы (1)


То, что вы пытаетесь запустить, - это асинхронный тест с мокко. Таким образом, тестовый пример должен получить параметр обратного вызова для вызова после завершения своих действий.

Вы вызываете done() в конце, но не получили его в качестве параметра.

изменить

it('should be able to say hello', function() {
}

в

it('should be able to say hello', function(done) {
}
person Jay Kumar    schedule 15.01.2013