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()')
Существует множество функций, таких как "test", "test1" и т.д. Внутри testDataService. Я не могу проверить остальные функции, потому что область внешней функции недоступна. Я не могу получить экземпляр из-за "var self = this" Пожалуйста, помогите.
Для создания объекта нет необходимости в новом операторе.
Пожалуйста, проверьте этот
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.
Ваш завод уже возвращает новый экземпляр testDataService
. Там нет необходимости вызывать new
. Когда вы пытаетесь вызвать new
на экземпляре, он выдает ошибку, которую вы видите.