Как заставить 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);
});
});