Angularjs Karma+中的角度模拟测试;摩卡罐';找不到模块
我正在学习AJS单元测试,包括RequireJS、Karma、Mocha、Chai和angular mocks。我在前四个方面有一些运气,但需要进入“真实”测试,无法让角度模拟工作。事情很多,所以我会尽量简洁 测试/karma.conf.jsAngularjs Karma+中的角度模拟测试;摩卡罐';找不到模块,angularjs,unit-testing,mocha.js,karma-runner,Angularjs,Unit Testing,Mocha.js,Karma Runner,我正在学习AJS单元测试,包括RequireJS、Karma、Mocha、Chai和angular mocks。我在前四个方面有一些运气,但需要进入“真实”测试,无法让角度模拟工作。事情很多,所以我会尽量简洁 测试/karma.conf.js module.exports = function (config) { config.set({ // requirejs may need to be listed before other modules (see https
module.exports = function (config) {
config.set({
// requirejs may need to be listed before other modules (see https://github.com/princed/karma-chai-plugins#limited-requirejs-support)
frameworks: ["requirejs", "mocha", "chai"],
files: [
// load the RequireJS config files first
{pattern: "client/app/require-shared.js", watched: false},
{pattern: "test/require-test.js", watched: false},
// set included to false for files to be loaded via RequireJS
{pattern: "client/**/*.js", included: false },
{pattern: "bower_components/**/*.js", included: false, watched: false},
// Mocha stuff
{pattern: "test/unit/mocha.conf.js", watched: false},
// test files
{pattern: "test/unit/**/pageSelectorTest.js", included: false }
],
exclude: [
"client/app/bootstrap.js",
"client/app/require-main.js",
"*.conf.js"
],
reporters: ["spec"],
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
browsers: [
"PhantomJS"
],
singleRun: true
});
};
window.mocha.setup({
ui: "tdd"
});
define([
"angular-mocks"
,"app"
], function () {
"use strict";
var MODULE_NAME = "PageSelector";
var assert = chai.assert;
suite("Unit testing " + MODULE_NAME, function() {
suite(MODULE_NAME + " module", function () {
var appModule;
setup(function () {
// "ng" and "ngMock" modules automatically loaded
appModule = angular.mock.module(MODULE_NAME);
console.log(appModule);
});
// setup(function () {
// angular.mock.inject(function () {
//
// });
// });
test("should exist", function () {
assert.isDefined(appModule, "module exists");
});
}); // end module tests
});
});
test/unit/mocha.conf.js
module.exports = function (config) {
config.set({
// requirejs may need to be listed before other modules (see https://github.com/princed/karma-chai-plugins#limited-requirejs-support)
frameworks: ["requirejs", "mocha", "chai"],
files: [
// load the RequireJS config files first
{pattern: "client/app/require-shared.js", watched: false},
{pattern: "test/require-test.js", watched: false},
// set included to false for files to be loaded via RequireJS
{pattern: "client/**/*.js", included: false },
{pattern: "bower_components/**/*.js", included: false, watched: false},
// Mocha stuff
{pattern: "test/unit/mocha.conf.js", watched: false},
// test files
{pattern: "test/unit/**/pageSelectorTest.js", included: false }
],
exclude: [
"client/app/bootstrap.js",
"client/app/require-main.js",
"*.conf.js"
],
reporters: ["spec"],
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
browsers: [
"PhantomJS"
],
singleRun: true
});
};
window.mocha.setup({
ui: "tdd"
});
define([
"angular-mocks"
,"app"
], function () {
"use strict";
var MODULE_NAME = "PageSelector";
var assert = chai.assert;
suite("Unit testing " + MODULE_NAME, function() {
suite(MODULE_NAME + " module", function () {
var appModule;
setup(function () {
// "ng" and "ngMock" modules automatically loaded
appModule = angular.mock.module(MODULE_NAME);
console.log(appModule);
});
// setup(function () {
// angular.mock.inject(function () {
//
// });
// });
test("should exist", function () {
assert.isDefined(appModule, "module exists");
});
}); // end module tests
});
});
test/unit/MyTest.js
module.exports = function (config) {
config.set({
// requirejs may need to be listed before other modules (see https://github.com/princed/karma-chai-plugins#limited-requirejs-support)
frameworks: ["requirejs", "mocha", "chai"],
files: [
// load the RequireJS config files first
{pattern: "client/app/require-shared.js", watched: false},
{pattern: "test/require-test.js", watched: false},
// set included to false for files to be loaded via RequireJS
{pattern: "client/**/*.js", included: false },
{pattern: "bower_components/**/*.js", included: false, watched: false},
// Mocha stuff
{pattern: "test/unit/mocha.conf.js", watched: false},
// test files
{pattern: "test/unit/**/pageSelectorTest.js", included: false }
],
exclude: [
"client/app/bootstrap.js",
"client/app/require-main.js",
"*.conf.js"
],
reporters: ["spec"],
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
browsers: [
"PhantomJS"
],
singleRun: true
});
};
window.mocha.setup({
ui: "tdd"
});
define([
"angular-mocks"
,"app"
], function () {
"use strict";
var MODULE_NAME = "PageSelector";
var assert = chai.assert;
suite("Unit testing " + MODULE_NAME, function() {
suite(MODULE_NAME + " module", function () {
var appModule;
setup(function () {
// "ng" and "ngMock" modules automatically loaded
appModule = angular.mock.module(MODULE_NAME);
console.log(appModule);
});
// setup(function () {
// angular.mock.inject(function () {
//
// });
// });
test("should exist", function () {
assert.isDefined(appModule, "module exists");
});
}); // end module tests
});
});
我将跳过发布所有RequireJS配置。我很确定我得到了角度的
和角度模拟
,因为我已经解决了这些错误
我的GrunFile只是有一个加载karma.conf.js
的选项。grunt karma
的输出是:
Running "karma:unit" (karma) task
INFO [karma]: Karma v0.12.16 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Linux)]: Connected on socket WJUF8xogEo-XCG-8zzJX with id 10483911
PhantomJS 1.9.7 (Linux)
LOG LOG: undefined
Unit testing PageSelector
PageSelector module
✗ should exist
AssertionError: module exists: expected undefined to not equal undefined
at /home/client/node_modules/chai/chai.js:925
at assertEqual (/home/client/node_modules/chai/chai.js:1402)
at /home/client/node_modules/chai/chai.js:3627
at /home/client/node_modules/chai/chai.js:2648
at /home/client/test/unit/utility/pageSelectorTest.js:37
at callFn (/home/client/node_modules/mocha/mocha.js:4338)
at /home/client/node_modules/mocha/mocha.js:4331
at /home/client/node_modules/mocha/mocha.js:4728
at /home/client/node_modules/mocha/mocha.js:4819
at next (/home/client/node_modules/mocha/mocha.js:4653)
at /home/client/node_modules/mocha/mocha.js:4663
at next (/home/client/node_modules/mocha/mocha.js:4601)
at /home/client/node_modules/mocha/mocha.js:4625
at done (/home/client/node_modules/mocha/mocha.js:4300)
at callFn (/home/client/node_modules/mocha/mocha.js:4343)
at /home/client/node_modules/mocha/mocha.js:4331
at next (/home/client/node_modules/mocha/mocha.js:4626)
at /home/client/node_modules/mocha/mocha.js:4625
at done (/home/client/node_modules/mocha/mocha.js:4300)
at callFn (/home/client/node_modules/mocha/mocha.js:4343)
at /home/client/node_modules/mocha/mocha.js:4331
at next (/home/client/node_modules/mocha/mocha.js:4626)
at /home/client/node_modules/mocha/mocha.js:4630
at timeslice (/home/client/node_modules/mocha/mocha.js:5763)
PhantomJS 1.9.7 (Linux): Executed 1 of 1 (1 FAILED) ERROR (0.003 secs / 0.002 secs)
Warning: Task "karma:unit" failed. Use --force to continue.
Aborted due to warnings.
如果我更改
angular.mock.module(模块名称)代码>到角度模块(模块名称)代码>,断言
有效。我错过了什么?(如果上面没有足够的信息,我很抱歉。我可以根据需要发布更多。)我深入研究angular-mocks.js<代码>模块
只是为注入
设置的。它本身并没有像angular那样实际加载模块,而module
会加载模块。我在“模块级”测试中不必要地使用了它,而angular.module
是合适的
当进入实际控制器/指令等测试时,我需要
模块
+注入
对。我深入angular-mocks.js<代码>模块只是为注入
设置的。它本身并没有像angular那样实际加载模块,而module
会加载模块。我在“模块级”测试中不必要地使用了它,而angular.module
是合适的
当进入实际控制器/指令/等测试时,我需要
模块
+注入
对。您能补充一些信息吗?我面临着同样的问题(angular.mocks。)模块只是初始化用于注入的内容,所以没有加载任何内容。若要在不使用inject跟踪模块时实际加载模块,必须使用angular.module。是否可以添加更多信息?我面临着同样的问题(angular.mocks。)模块只是初始化用于注入的内容,所以没有加载任何内容。若要在不使用inject跟随模块时实际加载模块,必须使用angular.module。