karma 测试运行程序未运行任何测试

问题描述 投票:0回答:4

我正在使用 karma 和 jasmine,并按照在线指南进行安装

npm install --save-dev karma

以及其他必需品

我跑了

./node_modules/karma/bin/karma start

karma start karma.conf.js

打开了一个外部 Chrome 浏览器,显示 karma 已连接。 我为我的一个函数编写了一个简单的单元测试,它似乎根本没有运行任何测试

这是我的 karma 配置文件。

    // 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
});
 };

我的单元测试

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();

   });

  });

我正在尝试测试控制器中的特定功能

(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;
        }
    }
    }]);
   })();

当我运行 karma 时控制台上显示的内容

  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

附加信息:我正在使用 Angular-js 和 ruby on Rails。我知道那里有茉莉花宝石可以帮助我。但我的老板坚持认为我们应该尝试使用 karma 为 anuglarjs 部分和 Rails 的 rspec 进行单元测试/E2E。

javascript angularjs unit-testing karma-runner
4个回答
61
投票

karma.config.js
下,将
singleRun
autoWatch
设置为
true
。在你的情况下,它们都设置为 false,因此 karma 不会运行测试。

singleRun: 如果为 true,它将捕获浏览器、运行测试并以 0 退出代码(如果所有测试通过)或 1 退出代码(如果任何测试失败)退出。

singleRun: true

autoWatch: 启用或禁用监视文件并在这些文件之一发生更改时执行测试。如果您想查看您的文件。

autoWatch: true

5
投票

简单但有时被忽视的原因:确保没有语法或编译错误。

如果通过 IDE 运行 JavaScript 的 Karma 测试,您可能会遇到语法错误,但在运行测试时不会出现该错误。这导致 Karma 发出消息“未找到测试”。

我在WebStorm下运行它;错误出现在“Karma Server”选项卡下,而“未找到测试”消息出现在“测试运行”下(“运行”或“调试”工具窗口下的两个选项卡)。


0
投票

以下配置对我有用 -

 reporters: ['progress', 'kjhtml'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO, // config.LOG_DEBUG,
        autoWatch: true,
        browsers: ['ChromeNS'],
        singleRun: false,
        customLaunchers: {
            ChromeHeadlessNS: {
                base: 'ChromeHeadless',
                flags: ['--no-sandbox', '--disable-gpu']
            },
            ChromeNS: {
                base: 'Chrome',
                flags: ['--no-sandbox', '--disable-gpu']
            }
        }

0
投票

我注意到将 Angular 版本从 v11 升级到 v12 后,在我的项目中找不到任何测试。

在我的

tests.ts
文件中我有这个:

const context = require.context('./', true, /\.spec\.ts$/);

更改为以下内容后现在可以使用:

const context = require.context('src/', true, /\.spec\.ts$/);
© www.soinside.com 2019 - 2024. All rights reserved.