2017-01-18 7 views
1

из документации Chai-а обещанногоChai-а обещанный - ждите с обещанием всегда превращается в пустой объект

(2 + 2).should.equal(4); 

// becomes 
return Promise.resolve(2 + 2).should.eventually.equal(4); 

expect({ foo: "bar" }).to.have.property("foo"); 

// becomes 
return expect(Promise.resolve({ foo: "bar" })).to.eventually.have.property("foo"); 

но если я пытаюсь

import chai from 'chai'; 
import sinon from 'sinon'; 
import sinonChai from 'sinon-chai'; 
import dirtyChai from 'dirty-chai'; 
import chaiAsPromised from 'chai-as-promised'; 

chai.use(sinonChai); 
chai.use(dirtyChai); 
chai.use(chaiAsPromised); 

//... 

it.only('test', function() { 
    return expect(Promise.resolve({ foo: 'bar' })).to.eventually.have.property('foo'); 
}); 

Я получил эту ошибку утверждения :

AssertionError: expected {} to have a property 'foo' 

Я пробовал с различными вариантами использования и утверждений, но это всегда то же самое, что выходит из expect(promise) - это всегда пустой объект.

Любая идея, почему?

Я использую

"chai-as-promised": "6.0.0", 
"chai": "^3.5.0", 
"dirty-chai": "^1.2.2", 
"mocha": "3.2.0", 
"sinon": "^1.17.3", 
"sinon-chai": "^2.8.0" 
+1

вы можете добавить, как вы импортировали ваш Chai LIBS? должно иметь что-то вроде 'var chai = require (" chai "); var chaiAsPromised = require ("chai-as-обещанный"); chai.use (chaiAsPromised); ' – LostJon

ответ

0

Должен работать как @LostJon упоминалось вы не показать, как вы импортировали Chai библиотеки.
, например.

let chai = require("chai"); 
let chaiAsPromised = require("chai-as-promised"); 

chai.use(chaiAsPromised); 
let expect = chai.expect; 

describe('chai as promise',() => { 
    it('some async test',() => {   

     return expect(Promise.resolve({foo:'bar'})).to.eventually.have.property("foo"); 

    }); 
}); 

Пример работы со следующими:

"dependencies": { 
    "chai": "^3.5.0", 
    "chai-as-promised": "^6.0.0", 
    "mocha": "^3.2.0" 
    } 
+0

Я обновил свой код, но это помогло мне узнать, что происходит. Если я удалю '' 'chai.use (dirtyChai),' '', он работает. поэтому я думаю, что dirtyChai не может играть вместе с chaiAsPromised. спасибо – Ins

+0

, если я поставлю '' '' chai.use (chaiAsPromised); '' 'перед' '' chai.use (dirtyChai); '' 'тогда он работает – Ins