除非您强制执行,否则在Angular /Jasmine测试中$scope.$digest()
,诺言似乎无法解决。这是愚蠢的IMO,但是很好,我可以在适当的地方(控制器)进行工作。
我现在遇到的情况是我有一个服务,该服务可能不太在乎应用程序中的任何作用域,它所做的只是从服务器返回一些数据,但诺言似乎无法解决。
app.service('myService', function($q) {
return {
getSomething: function() {
var deferred = $q.defer();
deferred.resolve('test');
return deferred.promise;
}
}
});
describe('Method: getSomething', function() {
// In this case the expect()s are never executed
it('should get something', function(done) {
var promise = myService.getSomething();
promise.then(function(resp) {
expect(resp).toBe('test');
expect(1).toEqual(2);
});
done();
});
// This throws an error because done() is never called.
// Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
it('should get something', function(done) {
var promise = myService.getSomething();
promise.then(function(resp) {
expect(resp).toBe('test');
expect(1).toEqual(2);
done();
});
});
});
测试此功能的正确方法是什么?
编辑:解决方案以供参考。 显然,即使服务未使用$ rootScope,您也不得不注入并消化该$ rootScope。
it('should get something', function($rootScope, done) {
var promise = myService.getSomething();
promise.then(function(resp) {
expect(resp).toBe('test');
});
$rootScope.$digest();
done();
});
您需要注入$rootScope
测试并触发$digest
它。
问题内容: 使AngularJS与其他JavaScript-MVC框架区分开的一件事是,它能够使用绑定将JavaScript中的绑定值回传到HTML。当您为$ scope变量分配任何值时,Angular会“自动”执行此操作。 但是,这有多自动化?有时,Angular不会接受更改,因此我需要调用$ scope。$ apply()或$ scope。$ digest()来通知angular来获取更改。有
问题内容: 在摘要循环中,对变量进行脏检查,即是否有100个范围变量,并且如果我更改一个变量,则它将监视所有变量。 假设我有100个彼此独立的范围模型变量。如果我对一个变量进行了更改,那么我不想检查所有其他99个变量。有什么办法吗?如果是,怎么办? 问题答案: 令人惊讶的是,这通常不是问题,即使具有数千个绑定,浏览器也不会出现问题,除非表达式很复杂。的常见答案 是 。 解决方案: 从开始,这很容易
问题内容: 我不知道如何使用和。官方文档没有帮助。 我不明白的是: 他们连接到DOM吗? 如何更新对模型的DOM更改? 它们之间的连接点是什么? 我尝试了本教程,但这需要对它的理解并且理所当然。 做什么和做什么,以及如何正确使用它们? 问题答案: 您需要了解AngularJS的工作原理才能理解它。 消化周期和作用域 首先,AngularJS定义了所谓的 摘要循环 的概念。这个周期可以看作是一个循环
问题内容: 如何测试广播后是否填充了示波器?我已经搜索并在stackexchange中找到了一些质量检查,但是没有一个回答我的问题。该代码可以正常工作,只是不知道如何对其进行测试。我可以补充一点,我是测试的新手,尤其是Jasmine。 所以,这是代码: 服务CrappySvc: 控制器GetCrappyCtrl: 茉莉花: })); }); 结石 问题答案: 您需要告诉Jasmine让间谍调用实际
此外,如果spring bean中有注释,那么是否有一种方法可以验证注入的bean是否具有正确的作用域。我的假设是,如果您将原型作用域bean注入到单例作用域bean中,很可能这不是您想要的。虽然在某些用例中,这是开发人员想要的,但在我们的案例中,到目前为止,这主要是开发人员的错误。
以下两者之间的区别是什么: