μ 체 ν μ€νΈ λͺ¨μμ μ€νν λ λ€μ μ€λ₯κ° λ°μν©λλ€.
timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
StackOverflow http://stackoverflow.com/questions/16607039/in-mocha-testing-while-calling-asynchronous-function-how-to-avoid-the-timeout-er# λ° μ¬κΈ° https: //github.com/mochajs/mocha/pull/278
κ·Έλ¬λ HTTP λ° μ½μμ μ²λ¦¬νλ ν μ€νΈμμ λͺ¨λ νλͺ©μ μμ ν νμλ λ¬Έμ λ μ¬μ ν μ§μλ©λλ€. μ§κΈ κ°μ§κ³ μλ κ²μ ν νλ¦Ώ λ°μ΄ν°, μ§μλ¬Έ λ° μ»¨νΈλ‘€λ¬ λ‘μ§μ νμΈνλ κ² μΈμλ λ³λ‘ νμ§ μλ κ²μ²λΌ 보μ΄λ Angular μ§μλ¬Έκ³Ό 컨νΈλ‘€λ¬ μ¬μλΏμ λλ€.
μ μ΄κ²μ΄ μ¬μ ν λ°μνλμ§ κ·Έλ¦¬κ³ λ¬Έμ κ° λ¬΄μμΈμ§ μ νν μ μ μλ λ μ’μ λ°©λ²μ΄ μλμ§ μλ μ¬λμ΄ μμ΅λκΉ? κ°μ¬ ν΄μ!
@gumatias λ ν μ€νΈλ₯Ό μ€μ νλ λ° ν¨μ¬ λ λ§μ λμμ΄ νμν©λλ€.
νΌλλ°±μ μ£Όμ μ κ°μ¬ν©λλ€ @boneskul !
νμ¬ μ½ 700κ° μ΄μμ μ¬μμ΄ μμΌλ©° λͺ¨λ λ μ μ½λμ λλ€. λ κ°μ μ μ¬ν μν μ€ νλλ₯Ό μ 곡ν μ μμ΅λλ€. λμμ΄ λ κΉμ?
μλλ νμ¬ package.jsonμ μλ λ΄μ©μ λλ€. mocha λ° karma-mochaμ κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ κ·Έλ μ΄λν΄λ λμμ΄ λμ§ μλ κ² κ°μ΅λλ€.
"devDependencies": {
"karma": "~0.12.30",
"karma-chai-jquery": "~1.0.0",
"karma-chrome-launcher": "~0.1",
"karma-coffee-preprocessor": "~0.1.3",
"karma-firefox-launcher": "~0.1",
"karma-jquery": "~0.1.0",
"karma-mocha": "0.2.0",
"karma-sinon-chai": "~0.1.1",
"karma-spec-reporter": "~0.0.10",
"mocha": "^2.2.5"
}
λ€μμ μκ° μ΄κ³Όκ° λ°μνμ§ μλ μνμ λλ¬νλ €λ μλ μ€ μΌλΆμ λλ€(μ±κ³΅νμ§ μμ).
1. ν
μ€νΈμμ κ° νλΌλ―Έμ€ λ° λΉλκΈ° νΈμΆ λ΄ λ° μ΄νμ done()
νΈμΆ
2. λΉλκΈ° νΈμΆ, μ½μ, httpBackend λ° μκ° μ΄κ³Όλ₯Ό μ²λ¦¬νλ λͺ¨λ μ¬μμ μ κ±°νμ΅λλ€(κ²½μ°μ λ°λΌ).
3. package.json
λλΆλΆμ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ
κ·Έλ μ΄λνμ΅λλ€.
"devDependencies": {
"karma": "~0.12.30",
"karma-chai-jquery": "1.0.0",
"karma-chrome-launcher": "0.2.2",
"karma-coffee-preprocessor": "0.3.0",
"karma-firefox-launcher": "~0.1",
"karma-jquery": "0.1.0",
"karma-mocha": "0.2.1",
"karma-sinon-chai": "1.1.0",
"karma-spec-reporter": "0.0.23",
"mocha": "2.3.4"
}
4. μΉ΄λ₯΄λ§ μ¬μ 리ν¬ν°κ° λ리λ€κ³ λΆννλ μ¬μμ μ κ±°νμ΅λλ€.
μ: Chrome 39.0.2171 (Mac OS X 10.11.2) SLOW 2.457 secs: My Spec Name "before each" hook for "should display " Add My Spec" when doing something"
λ€λ₯Έ μλ‘μ΄ μ¬μμ΄ λ리λ€κ³ λΆννλ κ²μΌλ‘ λνλ¬μ΅λλ€. μ΄λ‘ μΈν΄ κ·Όλ³Έ μμΈμ μ€μ λ‘ μ°Ύμ§ μκ³ μ¬μμ΄ μμ λ μ μμ΅λλ€.
μ΄ λ¬Έμ λ₯Ό λ«μ΅λλ€. https://github.com/mochajs/mocha/issues/2030μ μ€λͺ λ λ©λͺ¨λ¦¬ λμ λ¬Έμ λ‘ λ°νμ‘μ΅λλ€.
ν μ€νΈλ³ μκ° μ΄κ³Όλ₯Ό μ μ©νκ±°λ this.timeout(0)μ μ¬μ©νμ¬ μκ° μ΄κ³Όλ₯Ό λͺ¨λ λΉνμ±νν μλ μμ΅λλ€.
it('should take less than 500ms', function(done){
this.timeout(500);
setTimeout(done, 300);
});
μΆμ²: https://mochajs.org/#timeouts
λΉμ μ΄ μ λ²λ₯Ό μ¬μ©νλ κ²½μ°, Ember.runμμ νΈμΆ λΉλκΈ° ν¬μ₯μ μλ => μ΄ μ½κΈ°
λλ κ°μ λ¬Έμ κ° μμκ³ Ember.run => μμ νμ΅λλ€.
λν νμ΄νλ λ±λ±ν νμ΄νμ¬μΌ νλ€λ κ²μ κΈ°μ΅νμμμ€. (=> λμ ->λ₯Ό μ¬μ©νμ¬ ν λ² μ€μλ₯Ό μ μ§λ μ΅λλ€) κ·Έκ²μ μλ°μ€ν¬λ¦½νΈ λ²μ λλ¬Έμ λλ€. κ΄μ¬μ΄ μλ€λ©΄ μ½μ΄λ³΄μμμ€.
λ°κ³ μλ€
μ€λ₯: 2000msμ μκ° μ΄κ³Όκ° μ΄κ³Όλμμ΅λλ€. λΉλκΈ° ν
μ€νΈ λ° νν¬μ κ²½μ° "done()"μ΄ νΈμΆλμλμ§ νμΈνμμμ€. Promiseλ₯Ό λ°ννλ κ²½μ° ν΄κ²°λλμ§ νμΈνμμμ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ 무μμ
λκΉ?
λ΄ μ½λλ λ€μκ³Ό κ°μ΅λλ€.
describe("Test Search", function() {
it("Test Post Request", function(done) {
chai.request(postReqURL)
.post(postReqURL)
.send(postReqObject)
.end(function (err, res) {
if (err) done(err);
expect(res.status).to.equal(200);
done()
})
});
});
@vishnu2prasadh λ , HTTP APIκ° μλ΅νλ λ° κ±Έλ¦΄ κ²μΌλ‘ μμλλ κ²λ³΄λ€ λ κΈΈκ² μκ° μ΄κ³Όλ₯Ό λλ¦¬λ €κ³ μλνμ
¨μ΅λκΉ? done
μ ν
μ€νΈ μ¬μ©μ΄ μ¬λ°λ₯Έ κ² κ°μ΅λλ€.
@ScottFreeCode κ°μ¬ν©λλ€. this.timeout(10000)μ μΆκ°νμ¬ μ€λ₯κ° ν΄κ²°λμμ΅λλ€. λ΄λΆμ
it("Test Post Request", function(done) {
this.timeout(10000);
});
μ€ν¬λ¦½νΈ μλμ package.jsonμ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
"scripts": {
"start": "SET NODE_ENV=dev && node ./bin/www",
"devstart": "SET NODE_ENV=dev && nodemon ./bin/www",
"test": "mocha --timeout 10000" <= increase this from 1000 to 10000
},
κ·ΈλΌ κ·Έλ₯ μ€ννμλ©΄ λ©λλ€
npm test
@elvinaze beforeEach λΈλ‘μμ μκ° μ΄κ³Ό μ νμ λ리λ λ°©λ²μ΄ μμ΅λκΉ?
μ€ν¬λ¦½νΈ μλμ package.jsonμ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
"scripts": { "start": "SET NODE_ENV=dev && node ./bin/www", "devstart": "SET NODE_ENV=dev && nodemon ./bin/www", "test": "mocha --timeout 10000" <= increase this from 1000 to 10000 },
κ·ΈλΌ κ·Έλ₯ μ€ννμλ©΄ λ©λλ€
npm test
μ§κΈκΉμ§ κ°μ₯ μ μ©ν λ΅λ³ π
μ€ν¬λ¦½νΈ μλμ package.jsonμ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
"scripts": { "start": "SET NODE_ENV=dev && node ./bin/www", "devstart": "SET NODE_ENV=dev && nodemon ./bin/www", "test": "mocha --timeout 10000" <= increase this from 1000 to 10000 },
κ·ΈλΌ κ·Έλ₯ μ€ννμλ©΄ λ©λλ€
npm test
μ¬μ ν λμκ² μ .Error: Timeout of 10000msκ° μ΄κ³Όλμμ΅λλ€. λΉλκΈ° ν μ€νΈ λ° νν¬μ κ²½μ° "done()"μ΄ νΈμΆλμλμ§ νμΈνμμμ€. Promiseλ₯Ό λ°ννλ κ²½μ° ν΄κ²°λμλμ§ νμΈνμμμ€.
it('μ¬μ©μ λͺ¨λμ μ‘μΈμ€ν΄μΌ ν¨', function(done){
any_asynchfunction ().then(ν¨μ(체ν¬){
λ
Έλ ₯νλ€{
assert.strictEqual(check,true,'κ΄λ¦¬μ μ¬μ©μλ μ¬μ©μ λͺ¨λμ μ‘μΈμ€ν μ μμ΅λλ€');
μλ£();
}μΊμΉ(μ€λ₯){
μλ£(μ€λ₯);
}
});
});
var any_asynchfunction = ν¨μ(){
var μ§μ° = q.defer();
// λ€μκ³Ό κ°μ λΉλκΈ° ν¨μ νΈμΆ: API νΈμΆ(http://api.domain.com)
deferred.resolve(res);
deferred.promiseλ₯Ό λ°νν©λλ€.
}
μ½λ°±κ³Ό μ½μμ μ¬μ©νμ¬ Mochaλ‘ λΉλκΈ° μ½λ ν μ€νΈ
@ashish101184 , κ΄λ ¨ μλ λ§κ° λ¬Έμ μ λκΈμ μΆκ°νμ§ λ§μΈμ!
κ·νμ λ¬Έμ λ μ€λͺ μ μ μ€λͺ λμ΄
it('should access user module', function() {
return any_asynchfunction()
.then(function(check) {
assert.strictEqual(check, true, 'admin user should have access to user module');
});
});
ν μ€νΈλ³ μκ° μ΄κ³Όλ₯Ό μ μ©νκ±°λ this.timeout(0)μ μ¬μ©νμ¬ μκ° μ΄κ³Όλ₯Ό λͺ¨λ λΉνμ±νν μλ μμ΅λλ€.
it('should take less than 500ms', function(done){ this.timeout(500); setTimeout(done, 300); });
μΆμ²: https://mochajs.org/#timeouts
Helloλ κ·νμ μ§μΉ¨μ λ°λΌ '60000ms μ΄κ³Ό μκ° μ΄κ³Ό' μ€λ₯μ μ§λ©΄ν botium directline3μ μ€μΉνμ΅λλ€. μ΄ νμ μΆκ°ν΄μΌ νλ νμΌ
κ°λ³ ν
μ€νΈλ₯Ό μν΄ μ€μ νκ±°λ package.json
νμΌμ ꡬμ±μ μΆκ°νλ λμ μ μ μκ° μ΄κ³Όλ₯Ό μμ±νμ¬ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. λ΄ ν
μ€νΈ ν΄λ μλμ mocha.opts
νμΌμ λ§λ€μμ΅λλ€. νμΌμμ ν
μ€νΈλ₯Ό μ€νν ν©λ¦¬μ μΈ μκ° μ΄κ³Ό λ²μλ₯Ό μ€μ νμ΅λλ€. μ:
--timeout 10000
λλ λν κ·Έ μ€λ₯κ° λ°μνκ³ λͺ μκ° λμ μ‘°μ¬νκ³ λλ²κΉ ν νμ κ·Όλ³Έ μμΈμ μ°Ύμμ΅λλ€.
λ€μ ν μ€νΈλ₯Ό κ³ λ €νμμμ€.
const delay = require('delay')
describe('Test', function() {
it('should resolve', async function(done) {
await delay(1000)
})
})
ν μ€νΈλ₯Ό μ€ννλ©΄ λ€μ μ€λ₯κ° λ°μν©λλ€.
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
μ΄μ done μΈμκ° μ κ±°λ μ½κ° λ€λ₯Έ ν μ€νΈλ₯Ό κ³ λ €νμμμ€.
const delay = require('delay')
describe('Test', function() {
it('should resolve', async function() {
await delay(1000)
})
})
μ΄ ν μ€νΈλ₯Ό μ€ννλ©΄ ν΅κ³Όν©λλ€.
λΉλκΈ° ν¨μμ done μΈμκ° μμΌλ©΄ μ¬μ©λμ§ μκ³ ν μ€νΈκ° λλ λ done() μ΄ νΈμΆλλλΌλ ν μ€νΈκ° μ€λ¨λ©λλ€.
μ€ν¬λ¦½νΈ μλμ package.jsonμ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
"scripts": { "start": "SET NODE_ENV=dev && node ./bin/www", "devstart": "SET NODE_ENV=dev && nodemon ./bin/www", "test": "mocha --timeout 10000" <= increase this from 1000 to 10000 },
κ·ΈλΌ κ·Έλ₯ μ€ννμλ©΄ λ©λλ€
npm test
"test" "scripts" μ --timeout 10000 μ μΆκ°νλ©΄ μ μκ² λ§€λ ₯μ²λΌ 보μμ΅λλ€.
κ°μ¬ν©λλ€!
κ°μ₯ μ μ©ν λκΈ
μ€ν¬λ¦½νΈ μλμ package.jsonμ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
κ·ΈλΌ κ·Έλ₯ μ€ννμλ©΄ λ©λλ€