2016-07-25 3 views
0

Я не могу сделать Chai expect работы в этом простом примере: done функции мокко никогда не кажется, дозвонилась и утверждение просто игнорируется:мокко и Chai неудачи insde обещания

import chai, {expect} from 'chai'; 
import chaiAsPromised from 'chai-as-promised'; 

chai.use(chaiAsPromised); 

import 'isomorphic-fetch'; 

describe('Mocha and Chai',() => { 
    it('tests chai expect inside a promise', (done) => { 
    fetch('http://google.com').then(() => { 
     const actual = 'test'; 
     const expected = 'expected'; 
     console.log(`'${actual}'' equals to '${expected}'?`, actual === expected); 
     expect(actual).to.be.equals(expected); 
     expect(actual).to.eventually.be.equals(expected); 
     done(); 
    }); 
    }); 
}); 

Обратите внимание, что я пытался как , с chai-as-promisedeventually.

Это соответствующий выход:

> mocha tools/testSetup.js "src/**/*.spec.js" --reporter progress 

'test'' equals to 'expected'? false 

    1) Mocha and Chai tests chai expect inside a promise: 
    Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test. 

Как вы можете видеть, обещание работать, я получаю свой вывод на консоль. Но ни звонки expect(), ни вызов done() ничего не делают.

Я не уверен, если это уместно, но я использую isomorphic-fetch и предложенный es6-promise.

+0

Попробуйте с 'this.timeout (50000)' 'после его()' – slorenzo

ответ

1

Я нашел проблему. Обратный вызов done на самом деле не нужен. Мокко понять сценарий, если вы вернуть обещание внутри it() блока:

it('tests chai expect inside a promise',() => { 
    return fetch('http://google.com').then(() => { 
    const actual = 'test'; 
    const expected = 'expected'; 
    console.log(`'${actual}'' equals to '${expected}'?`, actual === expected); 
    expect(actual).to.be.equals(expected); 
    expect(actual).to.eventually.be.equals(expected);   
    }); 
}); 
+0

Что еще меня беспокоит то, что если вы пропустите возвращая обещание 'ожидать()' просто пройдет без эффекта, давая ложные срабатывания. –

Смежные вопросы