如何使用karma/jasmine测试browserify项目
我对测试的概念完全陌生,我需要一个关于如何在我的项目中进行测试的可靠示例: 我有一个吞咽文件是这样的不是所有的,只是重要的部分如何使用karma/jasmine测试browserify项目,jasmine,karma-runner,browserify,karma-jasmine,Jasmine,Karma Runner,Browserify,Karma Jasmine,我对测试的概念完全陌生,我需要一个关于如何在我的项目中进行测试的可靠示例: 我有一个吞咽文件是这样的不是所有的,只是重要的部分 gulp.task('bundle', function() { gulp.src('public/angular-app/main.js') .pipe(browserify({ debug: true })) .pipe(gulp.dest('public/min-js'));
gulp.task('bundle', function() {
gulp.src('public/angular-app/main.js')
.pipe(browserify({
debug: true
}))
.pipe(gulp.dest('public/min-js'));
});
这是我的main.js的一小部分:
'use strict';
angular.module('myApp', [
'ui.router',
'ui.bootstrap',
'ngSanitize',
'ngFx',
...
], ['$interpolateProvider',
function($interpolateProvider) {
$interpolateProvider.startSymbol('{{');
$interpolateProvider.endSymbol('}}');
}
])
.config(require('./config/routes'))
.config(require('./config/authInterceptor'))
.run(require('./config/runPhase'))
.run(require('./config/xeditable'))
.controller('homeController', require('./controllers/homeController'))
.controller('modalInstanceCtrl', require('./controllers/modalInstanceCtrl'))
.controller('modalparticipantCtrl',require('./controllers/modalParticipantCtrl'))
.controller('generatorController',require('./controllers/generatorController'))
.controller('navController', require('./controllers/navController'))
.controller('signInController', require('./controllers/signInController'))
.controller('pricingController', require('./controllers/pricingController'))
.controller('howItWorksController',require('./controllers/howItWorks'))
...
现在这是我的karma配置文件:
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'public/vendor/jquery/dist/jquery.js',
'public/vendor/angular/angular.js',
'public/vendor/angular-mocks/angular-mocks.js',
'public/angular-app/**/*.js',
'test/**/*Spec.js'
],
// list of files to exclude
exclude: [
],
当我用因果报应开始运行因果报应时,我得到的是:
未捕获引用错误:未定义require
位于root/public/angular-app/main.js
所以我的问题很简单,我如何做测试,例如,在我的homeController上
//更新
因此,我将测试文件更新为:
describe("An Angularjs test suite",function(){
var target, rootScope;
beforeEach(inject(function($rootScope) {
rootScope = $rootScope;
// Mock everything here
spyOn(rootScope, "$on")
}));
beforeEach(inject(function(homeController) {
target = homeController;
}));
it('should have called rootScope.$on', function(){
expect(rootScope.$on).toHaveBeenCalled();
});
});
// list of files / patterns to load in the browser
files: [
'public/vendor/jquery/dist/jquery.js',
'public/vendor/angular/angular.js',
'public/vendor/angular-mocks/angular-mocks.js',
'public/min-js/main.js',
'test/**/*Spec.js'
],
// list of files to exclude
exclude: [
],
browserify: {
watch: true,
debug: true
},
preprocessors: {
'test/*': ['browserify']
},
并将我的配置文件添加到此:
describe("An Angularjs test suite",function(){
var target, rootScope;
beforeEach(inject(function($rootScope) {
rootScope = $rootScope;
// Mock everything here
spyOn(rootScope, "$on")
}));
beforeEach(inject(function(homeController) {
target = homeController;
}));
it('should have called rootScope.$on', function(){
expect(rootScope.$on).toHaveBeenCalled();
});
});
// list of files / patterns to load in the browser
files: [
'public/vendor/jquery/dist/jquery.js',
'public/vendor/angular/angular.js',
'public/vendor/angular-mocks/angular-mocks.js',
'public/min-js/main.js',
'test/**/*Spec.js'
],
// list of files to exclude
exclude: [
],
browserify: {
watch: true,
debug: true
},
preprocessors: {
'test/*': ['browserify']
},
还是没什么用,首先他说“未知提供商homeControllerProvider”,
现在,如果我删除这些行:
beforeEach(inject(function(homeController) {
target = homeController;
}));
它仍然会给我错误,预计会调用spy$on,我如何修复此问题?在运行测试之前,您需要通知Karma运行Browserify 您可以将其添加到您的业力配置中:
{
browserify: {
watch: true,
debug: true
},
preprocessors: {
'test/*': ['browserify']
}
}
Karma配置文件引用:
或者看看我的一个使用Karma进行测试的项目:。在运行测试之前,您需要通知Karma运行Browserify 您可以将其添加到您的业力配置中:
{
browserify: {
watch: true,
debug: true
},
preprocessors: {
'test/*': ['browserify']
}
}
Karma配置文件引用:
或者看看我的一个使用Karma进行测试的项目:。我需要一个简单的例子,说明当我的所有程序都基于我在上面写的内容进行浏览时,如何插入homecontroller模块…gulp正在将这个main.js缩小到另一个main.js,现在如果我将这个缩小的文件包含到我的测试配置文件中,我如何告诉他:看,注入homecontroller,用它做一些事情……你需要AngularJS团队的angular.mock模块。这里有一个问题可以帮助你。我开玩笑说我需要一个简单的例子,当我的所有程序都基于我在上面写的内容进行浏览时,如何注入homecontroller模块…gulp正在将这个main.js缩小到另一个main.js,现在如果我将缩小的内容包括到我的测试配置文件中,我如何告诉他:看,注入homecontroller,使用它做一些事情……您需要AngularJS团队提供的angular.mock模块。这里有一个问题可以帮助你。