Я хотел бы спросить, как решить эту ошибку, которая не позволит мне написать какой-либо тест. Это Angularjs завод (service.es6) Я хотел бы проверить:Единичный тест на Angularjs с Jasmine и Webpack, ошибка Неизвестный поставщик
import Rx from 'rxjs/Rx'
var TheMiddleModule = angular.module('TheMiddleModule', [])
TheMiddleModule.factory('TheMiddleOp', function ($http){
var api = 'someUrl'
var TheMiddleOp = {}
TheMiddleOp.getSsoidFromService =() => {
return Rx.Observable.fromPromise(
$http({
method: 'GET',
url: api
})
)
}
return TheMiddleOp
})
Это моя тестовая конфигурация WebPack:
var JasmineWebpackPlugin = require('jasmine-webpack-plugin');
module.exports = {
entry: ['./app/scripts/test/service.js'],
plugins: [new JasmineWebpackPlugin()],
output: {
path: __dirname,
filename: 'test.js'
},
module: {
loaders: [
{
test: /\.es6$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel?presets[]=es2015!eslint-loader'
},
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel?presets[]=es2015!eslint-loader'
}
]
}
}
};
и это мой JS тестовый файл:
import 'angular';
import 'angular-mocks';
import '../services/service.es6';
var service;
describe('service test', function() {
var $httpBackend, $httpProvider;
var module = angular.mock.module();
var url = 'someUrl';
beforeEach(function() {
module('TheMiddleModule');
inject(function (_$httpBackend_, _TheMiddleOp_) {
$httpBackend = _$httpBackend_;
service = _TheMiddleOp_;
$httpBackend.when('POST', url)
.respond(200, {'sso-id':'test'});
});
});
it('$httpBackend should be defined', function(){
expect($httpBackend).toBeDefined();
});
it('TheMiddleOp should be defined', function(){
expect(service).toBeDefined();
});
it('should call the ssoid service', function(){
var getFromService = service.getSsoidFromService()
getFromService.subscribe(
(response) => {},
(e) => {},
() => {
$httpBackend.expectGET(url);
$httpBackend.flush();
}
)
});
afterEach(function() {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
});
жасмин ошибка дает мне:
Error: [$injector:unpr] Unknown provider: TheMiddleOpProvider <- TheMiddleOp
Если я комментирую строку:
service = _TheMiddleOp_;
за $ httpBackend тест проходит правильно и она не другие, конечно. Я также попытался импортировать service.es6 без экспорта, только с модулем в качестве экспорта по умолчанию и с большим количеством комбинаций. Заранее спасибо за любую помощь, которую вы могли бы мне дать.
Большое вам спасибо! Чтобы решить эту проблему, у меня есть: (1) написал это angular.mockule ('TheMiddleModule'); как предлагалось (2) переписал завод по предложению (3), удалил тест $ httpBackend. После этого ожидается (услуга) .toBeDefined(); прошел тест, и теперь я могу, наконец, работать над написанием фактических тестов. Еще раз спасибо! – user1308170
Ваш радушный рад, что я мог бы помочь –