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

When unit-testing my angularJS application with Jasmine, $interval is undefined

本文关键字:单元测试 interval 未定义 Jasmine 我的 应用程序 angularJS      更新时间:2023-09-26

当使用 Jasmine 为我的应用程序编写单元测试时,我有一个需要测试的$interval函数。为此,我正在尝试注入$interval并调用 $interval.flush();

我有以下代码(这是一个剥离版本)

describe("whatever", function () {
var $interval;
beforeEach(function () {
    angular.mock.module('whatever');
    angular.mock.inject(function (_$interval_) {
        $interval = _$interval_;
    });
});
describe("requestIntervalFunction", function () {
           $interval.flush(21000); //this gives me error "Cannot read property "flush" of undefined
        });

我的问题是,为什么它说$interval是未定义的?

您缺少specificaton部分。这就是您收到此类错误的原因。

通过定义it函数添加

describe("requestIntervalFunction", function() {
        it("test",function(){
            $interval.flush(21000); //this gives me error "Cannot read property "flush" of undefined    
        })
    });