0
ユニットテストを作成しています。このテストはtwitter APIを使用して任意のプロファイル(名前、つぶやき、フォロワー、登録日など)のデータを取得し、 。要点は、私がこのタスクにMochaライブラリを使用しているということですが、アサーションを実行するとtwitterリクエストが2秒以上かかるため、テストは常に失敗します(Mochaのデフォルトタイムアウト)。誰かが私に手を差し伸べることができますか?私は何をしなければならないので、アサーションの比較は、Twitterのリクエストのすべてのデータを受け取った後に実行されますか?Mochaを使った単体テストでは動作しません
code.js
class extractCode {
verificarUsername(a) {
if (a) {
var nombre;
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: 'XSpj4nEB5IOLgIvyZXiDAhBLt',
consumer_secret: 'dPjYUTih6n0ynt1y9C7bE0g0gyx6KSJgrGTeDEa3yH5flsdJPL',
access_token_key: '900532686-4sOwDfOFZm1fKmtZZhSMPH04REXMjqnugTOn3o1j',
access_token_secret: 'ghNtHt7VyjwNHXvXnZM5hFKaDH62bX7LEFqUBZ9SSb5Lg'
});
client.get('users/show', {screen_name: a}, function(error, response) {
if(error) throw error;
if(response.name) {
nombre = true
} else {
nombre = false
};
console.log(`
Nombre: '${response.name}'
ID: ${response.id_str}
Localidad: ${response.location}
Descripción del perfil: ${response.description}
Seguidores: ${response.followers_count}
Sigue a: ${response.friends_count}
Perfil creado el: ${response.created_at}\n`);
});
return nombre;
}
}
}
module.exports = extractCode;
テスト/ prueba.js
var assert = require('assert');
var extractCode = require('../code.js');
describe('Pruebas de perfil de Twitter', function() {
this.timeout(5000);
var c = new extractCode();
it('Verifica si se le pasó un username válido', function(done) {
assert.equal(c.verificarUsername('pedrofumero'),true, 'El username proporcionado no es válido');
done();
})
})
約束してあなたのコードを書き換える基本的なアプローチでありますデフォルトでmocha timeoutを2に変更しますか? –
あなたのコード 'this.timeout(5000);で行ったように@PedroFumero;' mochaはあなたが非同期テストで 'done()'呼び出しを期待する場合に定義するタイムアウトを尊重します。タイムアウトを引き上げる必要はありません。 – Gntem