App*_*mer 14 javascript unit-testing angularjs karma-runner
我正在使用茉莉花的业力,并通过安装使用跟随在线指南
npm install --save-dev karma
Run Code Online (Sandbox Code Playgroud)
和其他必需品
我跑了
./node_modules/karma/bin/karma start
Run Code Online (Sandbox Code Playgroud)
和
karma start karma.conf.js
Run Code Online (Sandbox Code Playgroud)
这打开了一个外部镀铬浏览器,显示业力是连接的.我为我的一个函数编写了一个简单的单元测试,它似乎根本没有运行任何测试
这是我的业力配置文件.
// Karma configuration
module.exports = function(config) {
config.set({
// base path, that will be used to resolve files and exclude
basePath: '',
// testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'app/assets/components/angular/angular.js',
'app/assets/components/angular-mocks/angular-mocks.js',
'app/assets/javascripts/**/**/*.js',
'spec/javascripts/**/*.js'
],
// list of files / patterns to exclude
exclude: [],
// web server port
port: 8080,
// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers: ['Chrome'],
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun: false
});
};
Run Code Online (Sandbox Code Playgroud)
我的单元测试
describe('Unit: AddMedicalService',function(){
beforeEach(module('DoctiblePreTreatment'));
var ctrl, scope;
beforeEach(inject(function($controller,$rootScope){
scope = $rootScope.$new();
ctrl = $controller('AddMedicalServiceModalCtrl',{
$scope: scope
});
}));
it('should create return true if var 1 is greater than var2 , false if other wise',
function(){
var compare1 = function(){
var var1 = 1;
var var2 = 0;
return var1 > var2;
}
var compare2 = function(){
var var1 = 0;
var var2 = 1;
return var1 > var2;
}
expect(compare1).toBeTruthy();
expect(compare2).toBeFalsy();
});
});
Run Code Online (Sandbox Code Playgroud)
我试图测试的控制器中的特定功能
(function() {
app.controller('AddMedicalServiceModalCtrl',['ProviderMedicalService','Treatment','$scope','$modalInstance',function(ProviderMedicalService,Treatment,$scope,$modalInstance){
$scope.newTreatment = {}
$scope.checkless = function(var1,var2){
var1 = parseInt(var1);
var2 = parseInt(var2);
if(var1 > var2){
return true;
}
else{
return false;
}
}
}]);
})();
Run Code Online (Sandbox Code Playgroud)
当我运行业力时控制台上显示的内容
INFO [karma]: Karma v0.12.21 server started at http://localhost:8080/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 36.0.1985 (Mac OS X 10.9.4)]: Connected on socket MkqZfXcO6iIX4Od23QEr with id 9498055
Run Code Online (Sandbox Code Playgroud)
附加信息:我在轨道上使用带有红宝石的angular-js.我知道那里有茉莉花宝石可以帮助我.但我的老板坚持认为我们应该尝试使用业力来进行我们的单元测试/ E2E用于anuglarjs部分和rspec用于rails.
Mah*_*kal 52
在karma.config.js设置任何singleRun或autoWatch到true.在你的情况下,它们都被设置为false,因此业力没有运行测试.
singleRun:如果为true,它捕获浏览器,运行测试并退出0退出代码(如果所有测试都通过)或1退出代码(如果任何测试失败).
singleRun: true
Run Code Online (Sandbox Code Playgroud)
autoWatch:启用或禁用观察文件,并在其中一个文件发生更改时执行测试.如果你想看你的文件.
autoWatch: true
Run Code Online (Sandbox Code Playgroud)
简单但有时被忽视的原因:确保没有语法或编译错误。
如果通过 IDE 运行 JavaScript 的 Karma 测试,您可能会遇到语法错误,但在运行测试时不会出现该错误。这导致 Karma 发出消息“未找到测试”。
我在 WebStorm 下运行它;错误出现在“Karma Server”选项卡下,而“未找到测试”消息出现在“测试运行”下(“运行”或“调试”工具窗口下的两个选项卡)。
| 归档时间: |
|
| 查看次数: |
13814 次 |
| 最近记录: |