2015-11-17 5 views
1

Я пытаюсь использовать chai spies в своих модульных тестах. Я использую карму, мокко, чай и синус.chai spy переходит к утверждению.be.spy, но бросает ошибку на .called() «не является шпионом или вызовом шпиону»

Я изначально пытался использовать chai spies для проверки обратного вызова в моем угловом приложении, которое было вызвано, когда оно было предоставлено. Но чтобы решить эту ошибку, я сварил свой тестовый сценарий с тем, что я считаю довольно простым.

У меня тест по указанному ниже блока

describe('spy tests:', function() { 

    it('should be spy', function() { 

    var spy = chai.spy(); 
    expect(spy).to.be.spy; 
    }); 

    it('should have been called', function() { 
    var spy = chai.spy(); 
    spy(); 
    expect(spy).to.have.been.called(); 
    }); 
} 

Первый «должен следить» тест пройден, который, насколько я могу причиной означает, что шпион, на самом деле создается. Однако второй тест завершается с ошибкой ниже:

TypeError: { [Function] 
toString: { [Function: toString] bind: { [Function: bind] bind:  [Circular] } }, 
reset: { [Function] bind: { [Function: bind] bind: [Circular] } }, 
__spy: { calls: [ [] ], called: true, name: undefined }, 
bind: { [Function: bind] bind: [Circular] } } is not a spy or a call to a spy! 

Это особенно неприятно, поскольку я только что проверил это шпион в предыдущем «должен быть шпионом» утверждение.

Ниже приведены мои рамки, как и я в том числе их в моих karma.conf.js:

frameworks: ['chai-as-promised', 'chai-things', 'chai-spies', 'sinon-chai', 'chai', 'mocha'] 

Чтобы сделать дела более расстраивает ниже утверждение не проходит:

expect(spy.__spy.called).to.be.true; 

Я счастлив для предоставления любой другой информации. Благодаря!

+0

У вас есть вопросы? Мне также трудно найти пример chai-spies. Я не могу заставить chai.spy.on работать. – devwannabe

ответ

0

Я не специалист по тайским шпионам, но у меня были подобные проблемы, и я получил шпионский шпион.

Я только что протестировал функцию, и, похоже, в конце отсутствует скобка «)»; Может быть, это ошибка копирования и вставки?

describe('spy tests:', function() { 

    it('should be spy', function() { 

    var spy = chai.spy(); 
    expect(spy).to.be.spy; 
    }); 

    it('should have been called', function() { 
    var spy = chai.spy(); 
    spy(); 
    expect(spy).to.have.been.called(); 
    }); 
}); 

Если это не проблема, то я был в состоянии создать успешное испытание Chai шпиона, переписав мою переменную функцию с шпиона.

function functionA() { 

} 

function thatCallsFunctionA() { 
    functionA(); 
} 

describe('Function thatCallsFunctionA', function() { 
    it('Should call functionA', function() { 
    var functionA = spy(functionA); 
    thatCallsFunctionA(); 
    expect(functionA).to.have.been.called(); 
    }); 
}) 

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

  • Нет связанных вопросов^_^