加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

不可用的模块错误:使用Protractor覆盖AngularJS Factory以进行E

发布时间:2020-12-17 16:56:27 所属栏目:安全 来源:网络整理
导读:我试图在我的一个 angularjs模块中模拟一个工厂.完整的angularjs应用程序是 angular.module('administration',['administrationServices']) 依赖: var module = angular.module('administrationServices') 包含工厂服务: module.factory('Example',[functi
我试图在我的一个 angularjs模块中模拟一个工厂.完整的angularjs应用程序是

angular.module('administration',['administrationServices'])

依赖:

var module = angular.module('administrationServices')

包含工厂服务:

module.factory('Example',[function(){
    return{
        list:function(){
            return ['This is real']
        }
    }
}])

这是我试图在量角器e2e测试中覆盖的服务.实际测试看起来像这样:

describe('Example page',function(){
    beforeEach(function() {
        var mock = function(){

            // get the module and provide the mock
            var module = angular.module('administrationServices').config(['$provide',function($provide){
                $provide.factory('Example',[function(){
                    return {
                        list: function(){
                            return ['This is a Mock Test'] 
                        }
                    }
                }])
            }])
        }

        // override the mock service
        browser.addMockModule('administrationServices',mock)

    })

    it('should go to the page and see mock text',function() {
        // code that goes to page and checks if the service works
        // ...
    })

})

当我$proractor conf.js时,我遇到了这个问题,我得到了错误:

Error while running module script administrationServices: [$injector:nomod] http://errors.angularjs.org/1.3.4/$injector/nomod?p0=administrationServices

这是我很困惑的地方.关于量角器的addMockModule的每篇博文都使用了类似的语法.在administrationServices中还有其他工厂服务,这些服务似乎被覆盖,因为由于这些服务(用户和组服务)不起作用,应用程序无法打开页面.

无论如何,如果有人看到这个并且可以帮助我指导正确的方向,那将有所帮助;我是模拟服务,量角器和e2e测试的新手.

解决方法

我认为问题是你的mock函数没有返回任何东西.它不在功能范围之外共享新模块.

var mock = function(){

        // get the module and provide the mock
        return angular.module('administrationServices').config(['$provide',function($provide){
            $provide.factory('Example',[function(){
                return {
                    list: function(){
                        return ['This is a Mock Test'];
                    }
                }
            }])
        }])
    };

    // override the mock service
    browser.addMockModule('administrationServices',mock)

只是让它返回新模块,它应该没问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读