4

我正在量角器中编写一个非常简单的测试规范来了解框架的要点。在我尝试测试服务之前一切正常。通常我会打电话inject来获取依赖关系,但现在我得到了inject is not defined错误。这是我的测试规范的代码:

function SingleModelPage() {

    this.getDataList = function() {
        return element.all(by.repeater('d in data'));
    };

    this.get = function() {
        browser.get('http://localhost:8080/');
        element(by.css('#ln-single-model')).click();
    };
}

describe('Single Model Page', function() {
    var page = new SingleModelPage();
    var dataService;           

    beforeEach(function() {    
        page.get();            
    });     

    // I tried to add mock module but angular is not defined as well, so
    // I couldn't call angular.module
    beforeEach(inject(function(SingleModelDataService) {
        dataService = SingleModelDataService;
    }));  

    describe('Testing Setup', function() { 
        it('should load the single model page by default', function() {
            expect(page.getDataList().count()).toEqual(1);
        });
    });

    describe('Single Model Service', function() {
        it('should contain single model data service', function() {
            //expect(dataService).not.toEqual(null);
        });
    });   
});  
4

2 回答 2

4

通常量角器是为端到端测试而设计的。对于测试服务,您应该使用 karma。

否则理论上你可以像这样访问你的服务:

browser.executeAsyncScript(function(callback) {
  var service = angular.injector(['MyModule']).get('myService');
  service.query({}, function(data) {
    callback(data);
  });
}).then(function (output) {
  console.log(output);
});

还有一个例子:

https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js

于 2014-04-03T17:14:12.880 回答
0

那是因为 angular 不在您的命名空间中。例如,使用“karma init”命令创建 karma-require 配置。

于 2014-11-05T15:28:25.017 回答