Javascript 延迟资源业力测试中的承诺
目前,我正在使用ngResource进行RESTful API调用,并使用KARMA&jasmine进行单元和集成测试。 在一个控制器内,我有一个期望完成承诺的功能:Javascript 延迟资源业力测试中的承诺,javascript,angularjs,karma-runner,Javascript,Angularjs,Karma Runner,目前,我正在使用ngResource进行RESTful API调用,并使用KARMA&jasmine进行单元和集成测试。 在一个控制器内,我有一个期望完成承诺的功能: var elem = new Element() // calling a ngResource Factory elem.$save().then(function () { $scope.elem.push(elem); }); 在我的karma测试中,我测试列表是否为空,调用上面的函数并检查$scope.
var elem = new Element() // calling a ngResource Factory
elem.$save().then(function () {
$scope.elem.push(elem);
});
在我的karma测试中,我测试列表是否为空,调用上面的函数并检查$scope.elem
数组是否有新创建的元素。但既然这是一个承诺,业力测试并不能解决这个问题。我尝试使用$rootScope.apply(),但是$httpBackend希望我定义很多调用,这是应该的。但我只想模拟一下通话
有什么优雅的解决方案吗?没有优雅的解决方案。测试的主要目的是为测试准备“隔离”生态系统。如果您想测试ajax调用,它们必须返回一些内容。你不能测试和仅仅告诉“跳过这个承诺,假装它是成功的” 当你需要解决任何承诺时,我会用这个
$httpBackend.flush();
$rootScope.$apply();
这将调用$httpBackend,当然它也将调用。你别无选择
1.)模拟所有后端调用(这是从我的测试中获取的)
因此,当头中的授权令牌未定义时,它将使用http 200在请求主机/me上使用伪json进行响应
2.)第二种选择,在nodejs/express内创建可模拟的后端,并使用JSON模拟所有请求。在开始jasmine测试之前,您还将启动这个“假”后端服务器。没有优雅的解决方案。测试的主要目的是为测试准备“隔离”生态系统。如果您想测试ajax调用,它们必须返回一些内容。你不能测试和仅仅告诉“跳过这个承诺,假装它是成功的” 当你需要解决任何承诺时,我会用这个
$httpBackend.flush();
$rootScope.$apply();
这将调用$httpBackend,当然它也将调用。你别无选择
1.)模拟所有后端调用(这是从我的测试中获取的)
因此,当头中的授权令牌未定义时,它将使用http 200在请求主机/me上使用伪json进行响应
2.)第二种选择,在nodejs/express内创建可模拟的后端,并使用JSON模拟所有请求。在开始jasmine测试之前,您还将启动此“假”后端服务器。您正在使用jasmine吗?你在使用什么样的单元测试框架?是的,我在使用jasmine。添加到描述中你在用茉莉花吗?你在使用什么样的单元测试框架?是的,我在使用jasmine。添加到描述中