gpt4 book ai didi

requirejs - Karma 正在使用 RequireJS 加载测试,但实际规范并未运行

转载 作者:行者123 更新时间:2023-12-01 06:33:51 26 4
gpt4 key购买 nike

我有一个问题,我试图让 Karma runner 执行我使用 RequireJS 加载的 mocha 规范。不幸的是,我不明白为什么即使框架正在加载,规范也不会执行。以下是我希望的相关部分:

// karma.conf.js
// Karma configuration
// Generated on Thu Jun 13 2013 13:38:06 GMT-0500 (CDT)


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


// list of files / patterns to load in the browser
files = [
MOCHA,
MOCHA_ADAPTER,
REQUIRE,
REQUIRE_ADAPTER,

// !! libs required for test framework
{pattern: 'test/lib/chai.js', included: false},

// !! put what used to be in your requirejs 'shim' config here
'app/bower_components/angular/angular.js',
'app/bower_components/angular-cookies/angular-cookies.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/bower_components/angular-resource/angular-resource.js',
'app/bower_components/angular-sanitize/angular-sanitize.js',
'app/bower_components/angular-scenario/angular-scenario.js',
'app/bower_components/jquery/jquery.js',


{pattern: 'app/scripts/**/*.js', included: false},
{pattern: 'test/**/*Spec.js', included: false},

'test/test-main.js'
];


// list of files to exclude
exclude = [
'app/scripts/main.js'
];


// 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_INFO;


// enable / disable watching file and executing tests whenever any file changes
autoWatch = true;


browsers = ['Chrome'];


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

然后这是我的 test-main.js 文件,它处理 requireJS 加载
var tests = [];
for (var file in window.__karma__.files) {
if (/Spec\.js$/.test(file)) {
tests.push('../../' + file.replace(/^\/base\//, '').replace(/\.js$/, ''));
}
}
requirejs.config({
baseUrl: '/base/app/scripts/',
paths: {
chai: "../../test/lib/chai",
namespace: "vendor/namespace",
jquery: "../bower_components/jquery/jquery",
bootstrap: "vendor/bootstrap",
angular: "../bower_components/angular/angular",
angularCookies: "../bower_components/angular-cookies/angular-cookies",
angularResource: "../bower_components/angular-resource/angular-resource",
angularSanitize: "../bower_components/angular-sanitize/angular-sanitize",
applicationController: "controllers/application",
gameController: "controllers/game",
gamePresenter: "directives/game-presenter",
}
});

require(tests, function(){
window.__karma__.start();
});

这是我正在运行的规范示例:
define(['chai', 'namespace','racecar'],
function(chai, namespace, racecar) {
var assert = chai.assert,
expect = chai.expect,
should = chai.should();

// This executes correctly!
var player = new com.angular.racecar.Player();
player.should.be.an('object');

// This never gets run!
describe('Player', function () {
it('should be an object', function () {
var player = new com.angular.racecar.Player();
player.should.be.an('object');
});
});
});

这是我正在测试的代码示例:
(function() {
"use strict";
var Player;

namespace('com.angular.racecar', {
Player: Player = (function() {
function Player() {
this.car = new com.angular.racecar.Car();
return this;
}
return Player;
})()
});
}(this)

输出只是说:
INFO [Chrome 27.0 (Mac)]: Connected on socket id fc4Kj9T0ppIzp9D0kmdH
Chrome 27.0 (Mac): Executed 0 of 0 SUCCESS (0.192 secs / 0 secs)

最佳答案

Angular-mock 应该只适用于 Jasmine。要使其与 Mocha 一起使用,您需要使用由 http://www.yearofmoo.com/ 创建的修改后的 angular-mock。在他们的测试文章中描述。文件的直接链接是 https://github.com/yearofmoo-articles/AngularJS-Testing-Article/tree/master/test/lib/angular

关于requirejs - Karma 正在使用 RequireJS 加载测试,但实际规范并未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17100633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com