Angular.js承诺在使用业力进行单元测试服务时不会解决

布拉德利

我正在尝试对Angular.js服务进行单元测试,并且需要对从Mock服务返回的Promise(使用Jasmine)设置期望值。我正在使用业力单元测试框架。相关代码段如下:

// I can't figure out how to do the equivalent of a $scope.$digest here. 
var loginStatusPromise = FacebookService.getFacebookToken();
loginStatusPromise.then(function(token) {
    expect(false).toBeTruthy(); // If this test passes, there is something going wrong!
    expect(token).not.toBeNull(); // The token should be ValidToken
    expect(token).toBe('ValidToken');
});

完整的单元测试代码可以在这里看到

问题是诺言。执行业力时,语句永远不会触发。因此,我的Expect语句均未执行。在我的控制器测试中,我使用$ scope。$ digest()来解决承诺,但是我不清楚如何在服务测试中做到这一点。正如我认为的那样,服务测试中没有“作用域”的概念。

我在这里的杆子末端错了吗?我需要在服务测试中注入$ rootScope,然后使用$ digest吗?或者,还有另一种方法吗?

假设您正在使用ngFacebook / ngModule,那么在解决方案/想法之前的快速提示是该项目没有单元测试!您确定要使用此项目吗?

我在Github上对您的单元测试进行了快速扫描,发现缺少以下内容:

1)模块初始化ngFacebook需要此功能,或者您需要初始化执行相同功能的模块。

beforeEach(module('ngFacebook'));

或者

beforeEach(module('yieldtome'));

2)认真考虑模拟ngFacebook模块

在单元级别的测试中,您正在模拟气泡中测试您的代码,在该气泡中,外部接口被存根。

否则)请尝试添加如下所示的调用API:

 $rootScope.$apply(function() {
     this.FacebookService.getFacebookToken().then(function(){
        //your expect code here
     });
    });
 $httpBackend.flush();//mock any anticipated outgoing requests as per [$httpBackend][2]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular JS服务中的单元测试承诺

来自分类Dev

承诺的Angular服务单元测试失败

来自分类Dev

使用业力和Jasmin在Angular2单元测试中未加载TemplateUrl

来自分类Dev

使用 DarkSkyApi 调用进行 Angular 2 服务单元测试

来自分类Dev

Angular 2可观察服务业力茉莉花单元测试不起作用

来自分类Dev

使用Jasmine进行Angular JS单元测试

来自分类Dev

Angular 服务中的单元测试 $q 承诺 - Karma、Jasmine

来自分类Dev

Angular 单元测试服务

来自分类Dev

单元测试 Angular 服务

来自分类Dev

对需要Electron的Angular2服务进行单元测试

来自分类Dev

使用angular-translate调用对AngularJS服务进行单元测试

来自分类Dev

使用 jasmine 运行 angular2 单元测试时调用服务时出错

来自分类Dev

使用Karma和Jasmine单元测试Angular服务

来自分类常见问题

使用@Input()进行Angular2单元测试

来自分类Dev

无法对使用$ window的Angular指令进行单元测试

来自分类Dev

Angular.js:使用spyOn模拟location.path()进行单元测试

来自分类Dev

如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

来自分类Dev

Angular服务的简单单元测试

来自分类Dev

Angular8服务单元测试

来自分类Dev

注入服务的 Angular 单元测试

来自分类Dev

Angular 单元测试在使用(提交)时失败

来自分类Dev

使用 rxjs switchmap 时,angular 5 单元测试失败

来自分类Dev

使用业力茉莉花进行单元测试时出现控制器错误

来自分类Dev

将数据传递到指令进行测试时,Angular指令单元测试问题

来自分类Dev

在Angular单元测试中使用Modernizr

来自分类Dev

如何对包含路由器弃用版本的Angular 2.0服务进行单元测试?

来自分类Dev

超时内未调用异步回调-对Typescript和Angular $ http服务进行单元测试

来自分类Dev

Angular-对在初始化时消耗承诺的控制器进行单元测试。(茉莉花)

来自分类Dev

使用Karma和Jasmine / Angular 8并行测试多个API调用的服务的单元测试

Related 相关文章

  1. 1

    Angular JS服务中的单元测试承诺

  2. 2

    承诺的Angular服务单元测试失败

  3. 3

    使用业力和Jasmin在Angular2单元测试中未加载TemplateUrl

  4. 4

    使用 DarkSkyApi 调用进行 Angular 2 服务单元测试

  5. 5

    Angular 2可观察服务业力茉莉花单元测试不起作用

  6. 6

    使用Jasmine进行Angular JS单元测试

  7. 7

    Angular 服务中的单元测试 $q 承诺 - Karma、Jasmine

  8. 8

    Angular 单元测试服务

  9. 9

    单元测试 Angular 服务

  10. 10

    对需要Electron的Angular2服务进行单元测试

  11. 11

    使用angular-translate调用对AngularJS服务进行单元测试

  12. 12

    使用 jasmine 运行 angular2 单元测试时调用服务时出错

  13. 13

    使用Karma和Jasmine单元测试Angular服务

  14. 14

    使用@Input()进行Angular2单元测试

  15. 15

    无法对使用$ window的Angular指令进行单元测试

  16. 16

    Angular.js:使用spyOn模拟location.path()进行单元测试

  17. 17

    如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

  18. 18

    Angular服务的简单单元测试

  19. 19

    Angular8服务单元测试

  20. 20

    注入服务的 Angular 单元测试

  21. 21

    Angular 单元测试在使用(提交)时失败

  22. 22

    使用 rxjs switchmap 时,angular 5 单元测试失败

  23. 23

    使用业力茉莉花进行单元测试时出现控制器错误

  24. 24

    将数据传递到指令进行测试时,Angular指令单元测试问题

  25. 25

    在Angular单元测试中使用Modernizr

  26. 26

    如何对包含路由器弃用版本的Angular 2.0服务进行单元测试?

  27. 27

    超时内未调用异步回调-对Typescript和Angular $ http服务进行单元测试

  28. 28

    Angular-对在初始化时消耗承诺的控制器进行单元测试。(茉莉花)

  29. 29

    使用Karma和Jasmine / Angular 8并行测试多个API调用的服务的单元测试

热门标签

归档