我似乎在让我的Jasmine单元测试实际执行时遇到问题。 我已经通过将logLevel设置为LOG_DEBUG来验证我的所有脚本都已加载。 我的单元测试与服务测试@ https://github.com/angular/angular-seed/blob/master/test/unit/servicesSpec.js相同。

此外,我使用了Testacular(在它重命名为Karma之前),我不记得有这个问题。 我似乎让Chrome运行,但我必须手动点击“调试”按钮。 即使我点击此按钮,我的测试也不会运行。

系统细节:

  • Windows 7的
  • 节点v0.10.4
  • Chrome 26.0.14
  • Karma 0.8.5(安装了3个警告 - 2个精度损失和1个'没有定义内联函数v8 :: Persistent v8 :: Persistent :: New(v8 :: Handle)')

这是我的模块代码(Scripts / main.js):

angular.module('sb.services', []).value('version', '0.0.1').value('amplify', amplify);
angular.module('sb.directives', []);
angular.module('sb.filters', []);
angular.module('sb.controllers', []).controller('SbController', [
    '$scope', 
    'amplify', 
    function ($scope, amplify) {
        $scope.message = 'Hello World! (amplify exists?=' + !!amplify + ')';
    }
]);
angular.module('sb', [
    'sb.services',
    'sb.directives',
    'sb.filters',
    'sb.controllers'
]);

这是我的规范(Test / unit / servicesSpec.js):

'use strict';

describe('my services', function () {
    beforeEach(module('sb.services'));

    describe('version', function () {
        it('should return current version', inject(function(version) {
            expect(version).toEqual('0.0.1');
        }));
    });
});

这是我的karma.conf.js文件:

// Karma configuration
// Generated on Mon Apr 15 2013 20:56:23 GMT-0400 (Eastern Daylight Time)


// base path, that will be used to resolve files and exclude
basePath = '';


// list of files / patterns to load in the browser
files = [
  JASMINE,
  JASMINE_ADAPTER,
  'Vendor/angular-1.0.6/angular.js',
  'Vendor/angular-1.0.6/angular-*.js',
  'Vendor/json2/json2.js',
  'Vendor/jquery/jquery-1.8.2.js',
  'Vendor/amplify/amplify.js',
  'Scripts/main.js',
  'Test/unit/*.js'
];


// list of files to exclude
exclude = [

];


// test results reporter to use
// possible values: 'dots', 'progress', 'junit'
reporters = ['progress'];


// web server port
port = 9876;


// cli runner port
runnerPort = 9100;


// enable / disable colors in the output (reporters and logs)
colors = true;


// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel = LOG_WARN;


// 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'];

junitReporter = {
    outputFile: 'Test/out/unit.xml',
    suite: 'unit'
};


// If browser does not capture in given timeout [ms], kill it
captureTimeout = 60000;


// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun = false;

===============>>#1 票数:15

我刚刚遇到了同样的问题,我发现在Karma自动运行测试之前我必须设置autoWatch = true

===============>>#2 票数:14

或者,您可以在karma.conf.js中使用exclude部分

exclude = [
  'Vendor/angular-1.0.6/angular-scenario.js'
];

===============>>#3 票数:12 已采纳

我的最后一个答案是错误的(将angular.js行下面的JASMINE和JASMINE_ADAPTER行移动)。 它解决了这个特殊问题,但却产生了其他问题。 相反,我所做的是修复它只是指定angular-mocks文件,而不是angular- *,如下所示:

   JASMINE,
   JASMINE_ADAPTER,
  'Vendor/angular-1.0.6/angular.js',
  'Vendor/angular-1.0.6/angular-mocks.js',
  'Vendor/json2/json2.js',
  'Vendor/jquery/jquery-1.8.2.js',
  'Vendor/amplify/amplify.js',
  'Scripts/main.js',
  'Test/unit/*.js'

===============>>#4 票数:8

我没有成功地尝试了以上所有,直到最后...

在我的karma.conf.js我删除了requirejs依赖项,例如:

    frameworks: ['jasmine', 'requirejs'],

至:

    frameworks: ['jasmine'],

===============>>#5 票数:7

如果您尝试使用JASMINE和JASMINE_ADAPTER解决此问题,则不再支持此问题(至少在Karma版本0.10.2上)。

而是使用:

frameworks: ['jasmine']

在您的Karma配置文件中。 你可以在这里阅读这个。

我还发现在我的文件数组中我设置了included: false表示模式。 included仅在您要手动包含Javascript文件时使用(例如,如果您将使用require.js)。 如果将从该模式加载所有测试,您将看到类似于以下内容的消息:

PhantomJS 1.9.2 (Linux): Executed 0 of 0 ERROR (0.151 secs / 0 secs)

因为从不包含包含测试的文件。 从我的模式的文件数组中删除included: false ,修复此问题,因为未指定默认值(如果包含)是true

===============>>#6 票数:3

在我的情况下, singleRun设置为false

解决方案// Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true

  ask by Darren translate from so

未解决问题?本站智能推荐:

2回复

Resharper单元测试和业力

我在Web应用程序的根目录中有一个karma.config.js,其中包括以下输入: 如果我启动像这样的角度测试: 使用业力启动,通过使用phantomjs可以正常工作。 如果我尝试使用Resharper单元测试资源管理器,则会显示消息“遇到声明异常”,提示我“测试未运行”
2回复

使用Karma进行单元测试而不调用函数

我正在尝试与Karma进行单元测试。 我已经根据文档完成了所有操作。 当我编写下面的测试部分时,它永远不会调用最后两个函数。
1回复

AngularJS / Karma - 指令中的单元测试函数

如何在指令的链接中单元测试函数? 我试过这样的事,但没有奏效: 指示: 单元测试:
1回复

Angular Karma / Jasmine单元测试不起作用

我正在尝试为新的Angular App编写单元测试,并且遇到了麻烦。 以下是我的控制器。 以下是我正在尝试的测试。 上面的期望不起作用,因为$ scope.countries是未定义的。 以下是错误消息。 另外,由于某种奇怪的原因,我看到测试被两次调用。 以下是我的
1回复

使用Karma和Jasmine进行angularJs单元测试时出错

我正在尝试使用Karma和Jasmine进行单元测试,但出现错误,请查看我的代码和结果,您能帮我解决此问题吗? 我对此还太陌生,所以解决方案可能太简单了。谢谢。 我的业力配置: 我的控制器: 这就是Chrome上的功能 这是终端报告: 更新:我搬到外面注入
1回复

14次测试后Angular / Karma单元测试错误-无论测试本身如何

一般问题 我们正在构建一个AngularJS应用程序,并使用业力/茉莉进行单元测试。 在运行业力并能够成功运行测试之后,我们遇到了一个非常奇怪的错误。 由于某些原因,我们不能运行超过14个单独的测试。 该数字似乎与之相关,因为删除或添加的测试并不重要。 当前有两个具有测试的
2回复

使用业力注入$ stateParams进行角度单元测试测试

让我们从控制器代码开始: 我确实有更多的代码,但它的相关逻辑,我没有将$ stateParmas注入控制器时我的测试工作正常。 所以继承测试文件: 即时收到未知提供程序错误。 我的控制器没有任何东西,所有我在控制器中做的是将变量设置为$ stateParams变量。 我如
2回复

AngularJS + Karma:在单元测试指令或控制器时重用模拟服务

我正在使用AngularJS + Karma。 configService管理我的应用程序的设置(例如背景颜色,它在调试模式下,一般权限......)。 它使用$ http加载初始数据。 我成功地为服务编写了测试,但我的指令和控制器使用它。 当我为指令编写单元测试时,我必须模拟服务。
1回复

使用Jasmine编写单元测试,需要在Karma中使用JS才能获得Angular JS?

我已经完成了使用Angular JS的图书馆管理应用程序,而Mongo Lab将充当数据库的一部分,我面临的问题是在板条箱测试用例中需要JS依赖 我面临的上述错误,请帮助我摆脱困境。 我的代码: Controller.js modules.js app_con
2回复

在Karma-Jasmine中运行angularJS单元测试用例时出错

MainCtrl.js testMainCtrl.js 错误: Chrome 48.0.2564(Windows 10 0.0.0)MainCtrl $ scope.loadInboxData收件箱数据称为FAILED 预期 等于未定义。