在PhantomJS中使用Jasmine测试$ interval

堆叠式

看来我interval从未被触发。

我有一个包含的指令,$interval我想对其进行测试。我删除了所有与指令相关的代码,并将其添加到其控制器中:

window.called = 0;
window.interval = $interval(function () {
    window.called++;
    console.log('interval ' + window.called); // 4
}, 10);
console.log('initialized'); // 1

测试如下所示:

describe('myDirective', function () {
    beforeEach(module('myModule'));
    beforeEach(function($compile, $rootScope) {
        /* ... compile element in its own scope ... */
    });
    it('should run the interval', function () {
        console.log(window.interval); // 2
        waitsFor(function () {
            console.log('tick'); // 3
            return false;
        }, 1000);
    });
});

这是一个愚蠢的测试。waitsFor实际上,方法始终会返回false,以进行调试。但这就是我在控制台中看到的全部内容:

initialized // 1
Object: {then: ..} // 2
tick // 3
tick // 3
tick // 3
tick // 3
..

最终导致测试失败。我从未interval在日志中看到任何一个我的代码总体上有问题吗,或者我缺少Jasmine / PhantomJS特有的问题?

Eitan Peer

$ interval在angular-mocks中有一个模拟实现。确保您使用的角模与您的角模匹配。

模拟版本的$ interval具有用于控制刻度的flush方法。参见ngMock。$ interval

观看此小提琴并进行演示:

//--- CODE --------------------------
angular.module('myModule', []).service('myModuleService', ['$interval', function ($interval) {
    var called = 0;
    $interval(function () {
        called++;
    }, 10);
    this.getCalled = function () {
        return called;
    }
}]);

// --- SPECS -------------------------

describe('test $interval', function () {

    it('calls the interval callback', function () {
        var service, $interval;
        angular.mock.module('myModule');
        angular.mock.inject(function (myModuleService, _$interval_) {
            // Initialize the service under test instance
            service = myModuleService;
            $interval = _$interval_;
        });
        expect(service.getCalled()).toEqual(0);
        $interval.flush(11);
        expect(service.getCalled()).toEqual(1);
        $interval.flush(10);
        expect(service.getCalled()).toEqual(2);
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Jasmine / Karma中测试$ interval

来自分类Dev

在Jasmine / Karma中测试$ interval

来自分类Dev

使用interval()进行角度测试

来自分类Dev

在AngularJS的$ interval中使用$ broadcast

来自分类Dev

使用Jasmine对我的angularJS应用程序进行单元测试时,$ interval是未定义的

来自分类Dev

我可以在服务中使用$ interval吗?

来自分类Dev

如何测试RxSwift Observable.interval进度

来自分类Dev

如何测试RxSwift Observable.interval进度

来自分类Dev

RX:测试Sample \ Interval \ Switch管道

来自分类Dev

如何在Angular中使用$ interval进行连续轮询?

来自分类Dev

在PostgreSQL中使用INTERVAL添加小时日期/时间

来自分类Dev

如何在Angular中使用$ interval进行连续轮询?

来自分类Dev

AngularJS Promise无法使用$ interval多次解析

来自分类Dev

Postgres INTERVAL使用表中的值

来自分类Dev

如何使用RxJava Interval运算符

来自分类Dev

Oracle + JPA-使用INTERVAL查询

来自分类Dev

如何使用 DateTime 对象拆分 Interval 对象

来自分类Dev

在Meteor中使用Jasmine测试异步功能

来自分类Dev

Angular,Jasmine-监视函数,在$ interval / $ timeout服务内执行

来自分类Dev

角单元测试:未知提供程序:$$ qProvider <-$$ q <-$ interval

来自分类Dev

如何使用 angular.js 中使用的 $timeout 和 $interval 但用于 Angular 版本?

来自分类Dev

如何在Rails 6中使用Postgres interval数据类型

来自分类Dev

AngularJS将使用$ http + $ interval的变量传递给服务

来自分类Dev

使用$ timeout或$ interval服务在Backgroud中获取Angular JS信息

来自分类Dev

如何使用脚本INTERVAL 1 <day | week | month>生成?

来自分类Dev

如何在PostgreSQL中将COALESCE与INTERVAL一起使用?

来自分类Dev

在服务方法上使用$ interval无法正常工作

来自分类Dev

AngularJS $ interval:使用回调函数作为传入函数的参数

来自分类Dev

使用 COUNT 、 GROUP BY 、 INTERVAL 和 LIMIT 创建 Django pgSQL 查询

Related 相关文章

  1. 1

    在Jasmine / Karma中测试$ interval

  2. 2

    在Jasmine / Karma中测试$ interval

  3. 3

    使用interval()进行角度测试

  4. 4

    在AngularJS的$ interval中使用$ broadcast

  5. 5

    使用Jasmine对我的angularJS应用程序进行单元测试时,$ interval是未定义的

  6. 6

    我可以在服务中使用$ interval吗?

  7. 7

    如何测试RxSwift Observable.interval进度

  8. 8

    如何测试RxSwift Observable.interval进度

  9. 9

    RX:测试Sample \ Interval \ Switch管道

  10. 10

    如何在Angular中使用$ interval进行连续轮询?

  11. 11

    在PostgreSQL中使用INTERVAL添加小时日期/时间

  12. 12

    如何在Angular中使用$ interval进行连续轮询?

  13. 13

    AngularJS Promise无法使用$ interval多次解析

  14. 14

    Postgres INTERVAL使用表中的值

  15. 15

    如何使用RxJava Interval运算符

  16. 16

    Oracle + JPA-使用INTERVAL查询

  17. 17

    如何使用 DateTime 对象拆分 Interval 对象

  18. 18

    在Meteor中使用Jasmine测试异步功能

  19. 19

    Angular,Jasmine-监视函数,在$ interval / $ timeout服务内执行

  20. 20

    角单元测试:未知提供程序:$$ qProvider <-$$ q <-$ interval

  21. 21

    如何使用 angular.js 中使用的 $timeout 和 $interval 但用于 Angular 版本?

  22. 22

    如何在Rails 6中使用Postgres interval数据类型

  23. 23

    AngularJS将使用$ http + $ interval的变量传递给服务

  24. 24

    使用$ timeout或$ interval服务在Backgroud中获取Angular JS信息

  25. 25

    如何使用脚本INTERVAL 1 <day | week | month>生成?

  26. 26

    如何在PostgreSQL中将COALESCE与INTERVAL一起使用?

  27. 27

    在服务方法上使用$ interval无法正常工作

  28. 28

    AngularJS $ interval:使用回调函数作为传入函数的参数

  29. 29

    使用 COUNT 、 GROUP BY 、 INTERVAL 和 LIMIT 创建 Django pgSQL 查询

热门标签

归档