我有一个正在运行的AngularJS项目,我第一次配置了Karma。
此测试有效:
describe('myFactory', function () {
// Load your module.
beforeEach(module('MyApp'));
it('can get an instance of my factory', inject(function(sampleSvc) {
expect(sampleSvc).toBeDefined();
}));
});
此测试不起作用:
describe('myFactory', function () {
// Load your module.
beforeEach(module('MyApp'));
// Setup the mock service in an anonymous module.
beforeEach(module(function ($provide) {
$provide.service('$window', function(){
this.alert= jasmine.createSpy('alert');
});
}));
it('can get an instance of my factory', inject(function(sampleSvc) {
expect(sampleSvc).toBeDefined();
}));
});
第三方愤怒失败:
当我从app.config中删除angulartics时,它在热键上失败:
这对我来说是新的。
app.js的配置部分:
app.config(['$routeProvider', '$translateProvider', 'i18n', '$analyticsProvider',
function ($routeProvider, $translateProvider, i18n, $analyticsProvider) {
$analyticsProvider.developerMode(true);
$analyticsProvider.firstPageview(true);
/* Records pages that don't use $state or $route */
$analyticsProvider.withAutoBase(true);
$routeProvider.
when('/welcome', {
templateUrl: 'partials/welcome/welcome.html',
controller: 'WelcomeCtrl'
}).
when('/main', {
templateUrl: 'partials/main/main.html',
controller: 'MainCtrl',
hotkeys: [
['tab', 'Add a new task', 'addNewEventByTab()']
]
}).
when('/migration', {
templateUrl: 'partials/migration/migration.html',
controller: 'MigrationCtrl'
}).
when('/loadingPage', {
templateUrl: 'partials/loadingPage/loadingPage.html',
controller: 'LoadingPageCtrl'
}).
when('/beta', {
templateUrl: 'partials/closedBeta/closedBeta.html',
controller: 'ClosedBetaCtrl'
}).
otherwise({
redirectTo: '/loadingPage'
});
}]);
答案 0 :(得分:1)
我应该使用不同的app.js进行测试吗?
<强> 1。全局模拟您的模块
(用于所有测试,但是,您将无法测试此模块)
定义,新模块,并添加服务提供程序的模拟)
app.module('angulartics', []);
配置你的karma.conf.js以使用你的模块模拟:
files = [
....
'scripts/mocks/*.js',
...
'scripts/specs/*.spec.js'
]
<强> 2。或者,在某些地方嘲笑你的模块
beforeEach(function(){
module('moduleToMock');
module(function ($provide) {
$provide.value('yourService', serviceMock);
});
});
为什么Karma在第三方DOM提供商上失败了?在那儿 一个DOM准时准备好了吗?
您正在进行单元测试,因此,您正在单独测试内容,洞穴应用程序将无法运行。你决定要执行什么和测试。