私はMochaと協力しており、構築中のAPIをテストしようとしています。
関数を配置する場所がわかりませんdone()
。
現在の場所に配置すると、のコールバック関数は実行されませんUser.findOne()
。
のコールバック関数の下部にdoneを配置するとUser.findOne()
、タイムアウトが発生します。
私は非同期とこの完了した関数に比較的慣れていないので、誰かがこれらの2つのケースが発生する理由と、Mochaで正しくテストされるようにコードを修正する方法を説明できますか?
describe('POST /signup', function() {
before(checkServerIsRunning); // Need to implement
it('create a new user if username is unique', function(done) {
httpReq({
method : 'POST',
url : url + '/signup',
json : true,
body : JSON.stringify({
username : 'test',
first : 'first',
last : 'last' })
},
function (err, res, body) {
if (err) {
done(err);
}
else {
res.statusCode.should.be.equal(201);
User.findOne( { username: 'test' }, function(err, user) {
user.should.have.property('username', 'testy');
user.should.have.property('firstName', 'first');
user.should.have.property('lastName', 'last');
usersToRemove.push(user);
});
done();
}
}
);
});
});