我一直在尝试测试我正在编写的一个使用角度数据存储的服务,但无法让它调用传递给then()的回调。下面我有一个基本的例子来说明我想要做的事情以及我期望发生的事情。有没有人能解释一下我做错了什么,以及为什么它不能像预期的那样工作?
我希望这个测试能够通过,并将this is called输出到控制台。这两种方法都没有用,失败的原因是"expected false to be true“。
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);
});
});发布于 2015-01-27 23:17:59
好的,我们解决了这个问题,我们需要在期望之前调用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);
});});
https://stackoverflow.com/questions/28156390
复制相似问题