I have a following code:
angular
.module('testApp')
.factory('testDataService', function ($http) {
function testDataService(){
var self = this;
self.test = function(){
//do something
}
self.test1 = function(){
// do something
}
}
return new testDataService();
When I try to write a test case like
beforeEach(function(){
new testDataService();
});
It gives some error like:
> TypeError: '[object Object]' is not a constructor (evaluating 'new testDataService()')
testDataService中有许多功能,如“test”,“test1”等。我无法测试其余功能,因为外部功能的范围无法访问。由于“var self = this”,我无法获取实例 请帮忙。
答案 0 :(得分:1)
不需要新的运算符来创建Object。
请检查一下
describe("\n\Testing factory", function () {
var factTestDataService;
beforeEach(inject(function (testDataService) {
factTestDataService= testDataService;
}))
it("factTestDataService test to defined",function(){
expect(factTestDataService.test()).toBeDefined()
})
it("factTestDataService test1 to defined",function(){
expect(factTestDataService.test1()).toBeDefined()
})
it("factTestDataService to defined",function(){
expect(factTestDataService).toBeDefined()
})
});
您需要注入 testDataService 工厂并将其存储在本地var。
中然后您可以使用此方法访问该工厂中定义的方法,就像在角度中一样,可以使用不同的Jasmine测试方法进行检查。
答案 1 :(得分:0)
您的工厂已经返回testDataService
的新实例。无需拨打new
。当您尝试在实例上调用new
时,它会抛出您看到的错误。