我在线浏览AngularJS的一些示例,试图了解它是如何工作的。我试图像在示例中那样使用茉莉花进行测试。在我的spec文件中,我有:
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未定义
我正确使用Jasmine吗?我基本上只是在spec.js文件中编写所有的角度和茉莉花代码。当我在另一个文件中使用角度代码时,我的spec.js文件无法找到它。可能是因为我没有设置任何依赖关系,因为我刚刚开始使用这些东西。
编辑,将$固定为$ q和referencerror。
答案 0 :(得分:4)
我猜您没有在单元测试中注入$q
服务。
例如,在您的beforeEach块中,您可以注入它:
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"]);
});
});