gpt4 book ai didi

javascript - Jasmine ,$q 未定义

转载 作者:行者123 更新时间:2023-11-29 10:15:40 27 4
gpt4 key购买 nike

我正在浏览 AngularJS 的一些在线示例,以尝试了解它的工作原理。我正在尝试像示例中那样使用 jasmine 进行测试。在我的规范文件中,我有:

var Person = function (name, $log) {
this.eat = function (food) {
$log.info(name + " is eating delicious " + food);
};
this.beHungry = function (reason) {
$log.warn(name + " hungry " + reason);
};
};

var bob = new Person();

describe("describe", function () {
it("$q", function () {
var pizzaOrderFulfillment = $q.defer();
var pizzaDelivered = pizzaOrderFulfillment.promise;

pizzaDelivered.then(bob.eat, bob.beHungry);

pizzaOrderFulfillment.resolve("resolved");
$rootScope.$digest();

expect($log.TypeInfo.logs).toContain(["resolved"]);
});
});

我明白了

ReferenceError: $q is not defined

我是否正确使用 Jasmine?我基本上只是在 spec.js 文件中编写我所有的 angular 和 jasmine 代码。当我在另一个文件中有 Angular 代码时,我的 spec.js 文件找不到它。可能是因为我没有对首先加载的内容设置任何依赖关系,因为我刚刚开始使用这些东西。

编辑,将 $ 固定为 $q 和 referencerror。

最佳答案

我猜你没有在你的单元测试中注入(inject) $q 服务。

例如在你的 beforeEach block 中你可以注入(inject)它:

var q;
beforeEach(inject(function($q) {
q = $q;
}));

然后在你的单元测试中:

describe("describe", function () {
it("$q", function () {
var pizzaOrderFulfillment = q.defer();
var pizzaDelivered = pizzaOrderFulfillment.promise;

pizzaDelivered.then(bob.eat, bob.beHungry);

pizzaOrderFulfillment.resolve("resolved");
$rootScope.$digest();

expect($log.TypeInfo.logs).toContain(["resolved"]);
});
});

关于javascript - Jasmine ,$q 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22492517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com