Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jasmine 2.0测试angularjs工厂方法,返回承诺_Javascript_Angularjs_Jasmine_Jasmine Async - Fatal编程技术网

Javascript jasmine 2.0测试angularjs工厂方法,返回承诺

Javascript jasmine 2.0测试angularjs工厂方法,返回承诺,javascript,angularjs,jasmine,jasmine-async,Javascript,Angularjs,Jasmine,Jasmine Async,当我尝试测试一个返回承诺的函数时,我得到以下错误: 错误:超时-在超时内未调用异步回调 由jasmine.DEFAULT\u TIMEOUT\u INTERVAL指定 " 我的规格如下: describe('async promise test', function () { beforeEach(module('app')); beforeEach(function () { jasmine.DEFAULT_TIMEOUT_INTERVAL = 6 * 1

当我尝试测试一个返回承诺的函数时,我得到以下错误:

错误:超时-在超时内未调用异步回调 由jasmine.DEFAULT\u TIMEOUT\u INTERVAL指定

"

我的规格如下:

describe('async promise test', function () {

    beforeEach(module('app'));

    beforeEach(function () {
         jasmine.DEFAULT_TIMEOUT_INTERVAL = 6 * 1000;
    })

    it('should match the name', function (done) {
        inject(function ($rootScope,promiseTest) {
          $rootScope.$apply(function(){
             var promise =promiseTest.checkPromise();
            promise.then(function(data){
           console.log(data);
           done();
          })
        })
      })
    })
});

请检查plunker链接以获取完整的代码

您正在使用的
mock
模块,该模块覆盖
$timeout
,因此测试是可重复的()

您必须使用
$timeout.flush(1000)(并且
$apply()
是冗余的):


请参阅forked plunk:

您必须将$timeout注入测试并刷新它:

 inject(function ($rootScope,promiseTest, $timeout) {
      $rootScope.$apply(function(){
         var promise =promiseTest.checkPromise();
         console.log("Created promise")
        promise.then(function(data){
       console.log(data);
       done();
      })
    });
    $timeout.flush();
请参见此处修改的plunker:


嘿,卡尔,实际上我正在测试索引数据库,它没有按预期工作。。。。链接:
 inject(function ($rootScope,promiseTest, $timeout) {
      $rootScope.$apply(function(){
         var promise =promiseTest.checkPromise();
         console.log("Created promise")
        promise.then(function(data){
       console.log(data);
       done();
      })
    });
    $timeout.flush();