Как заставить DS.find(). Then() вызываться при использовании angular-data-mocks

Я пытался протестировать службу, которую я пишу, которая использует хранилища данных угловых данных и не может заставить ее вызвать обратный вызов, переданный then(), У меня есть базовый пример того, что я пытаюсь сделать ниже и чего я ожидаю. Кто-нибудь может пролить свет на то, что я делаю неправильно, и почему это не работает, как ожидалось?

Я ожидаю, что этот тест пройдет и распечатает this is called на консоль. Это не так, потерпев неудачу с "ожидаемым ложным, чтобы быть правдой".

describe('usage of expectFind', function(){
    beforeEach(function (done) {
        inject(function (_DS_) {
            DS = _DS_;
            done();
        });
    });

    it('should call the callback passed to then', function(done){
        DS.expectFind('foo', 1).respond([{a: 'thing'}])

        var called = false;
        DS.find('foo', 1).then(function(aFoo){
            console.log('this is called');
            called = true;
            done();
        });
        expect(called).toBe(true);
    });
});

1 ответ

Хорошо, мы решили это, нам нужно позвонить DS.flush() до ожидания. Это то, что фактически вызывает обратные вызовы для вызова.

describe('usage of expectFind', function(){
beforeEach(function (done) {
    inject(function (_DS_) {
        DS = _DS_;
        done();
    });
});

it('should call the callback passed to then', function(done){
    DS.expectFind('foo', 1).respond([{a: 'thing'}])

    var called = false;
    DS.find('foo', 1).then(function(aFoo){
        console.log('this is called');
        called = true;
        done();
    });


    // this is what's missing
    DS.flush();

    expect(called).toBe(true);
});

});

Другие вопросы по тегам