我的角应用程序正常运行时工作正常,但在我进行单元测试时似乎执行了两次(使用Karma
它的实例化如下:
require('./app.js');
var app = document.URL.indexOf( 'http://' ) === -1 && document.URL.indexOf( 'https://' ) === -1;
if ( app ) {
console.log('App running on a mobile device');
document.addEventListener("deviceready", function(){
angular.bootstrap(document, ['esme']);
});
} else {
console.log("App running in a browser");
angular.element(document).ready(function() {
angular.bootstrap(document, ['esme']);
});
}
var esme = angular.module('esme', ['ui.router', 'ngAnimate', 'ngTouch', 'DataStore', 'angular-carousel', 'SessionParams', 'hmTouchEvents']);
esme.run(['$location', '$rootScope', '$state', 'NotificationManager', function($location, $rootScope, $state, NotificationManager) {
console.log('run');
NotificationManager.init();
$rootScope.$on('$locationChangeSuccess', function (event, current, previous) {
if($state.current.data)
$rootScope.title = $state.current.data.title;
});
}]);
describe('TestController', function() {
var $controller;
var $rootScope;
beforeEach(module('esme'));
beforeEach(module(function($urlRouterProvider) {
$urlRouterProvider.deferIntercept();
}));
beforeEach(inject(function(_$controller_, _$rootScope_){
// The injector unwraps the underscores (_) from around the parameter names when matching
$controller = _$controller_;
$rootScope = _$rootScope_.$new();
}));
describe('$scope.cheer', function() {
var $scope, controller;
beforeEach(function() {
$scope = $rootScope;
controller = $controller('Main', { $scope: $scope });
});
describe("#hello()", function(){
it('ensures hello is correct', function() {
$scope.test.should.equal('test');
});
});
});
});
浏览器控制台的输出如下:
“在浏览器中运行的应用程序”
"配置"
“运行”
但是单元测试的输出如下:
INFO [karma]: Karma v0.12.31 服务器在 http://localhost:9876/ 启动
[..因果报应/幻觉之类的..]
日志:“在浏览器中运行的应用程序”
WARN[we B- server]:404:/views/Main/log in . html
日志:“配置”
日志:运行
日志:“配置”
日志:“运行”
幻像1.9.8 (Windows 7):已成功执行1/1(0.007秒/ 0.001秒)
WARN[we B- server]:404:/views/Main/log in . html
[17:16:14]5.31秒后完成“测试:单元”
我仍然在学习如何模拟一个angular应用程序,所以我坚信我在测试文件中犯了一些明显的错误。你能帮我找到他们并解释为什么会发生这种行为吗?
我现在可能有的唯一线索来自Angular的文档,我应该声明一个仅用于运行应用程序的模块吗?:
run blocks——在创建注射器后执行,用于启动应用程序。只有实例和常量可以注入到运行块中。这是为了防止在应用程序运行时进一步配置系统。
运行块是Angular中最接近main方法的东西。运行块是启动应用程序所需运行的代码。它是在所有服务都已配置并创建注入器后执行的。运行块通常包含难以进行单元测试的代码,因此应在隔离模块中声明,以便在单元测试中可以忽略它们。
谢谢你的帮助!
经过一个美好的夜晚,答案很简单...
因为我正在做手动引导,在我的karma.conf文件中,我只是简单地排除了它完成的文件。
files: [
'lib/angular-mocks/angular-mocks.js',
'src/js/**/*.js',
'test/test.js'
],
// list of files to exclude
exclude: [
'src/js/bootstrap.js'
],
问题内容: 我知道这个问题已经被问过很多次了,而且我知道在大多数情况下人们会丢失文件。 我遇到了同样的问题,试图在模块上测试工厂。不幸的是,我一直遇到测试方面的问题(为什么要使用Angular,为什么要假设和对象?),未定义模块的状态。我很茫然。我也尝试过使用angular.mocks.module,但随后收到一条消息,提示未定义Angular。我究竟做错了什么? 值得注意的是,我正在使用gulp
我正在尝试测试我的角度4.1.0组件- 然而,一个简单的“应该创建”测试抛出了这个神秘的错误... NetworkError:未能对“XMLHttpRequest”执行“send”:未能加载“ng:///DynamicTestModule/module.ngfactory.js”。 所以我发现了这个问题,这表明问题是组件有 参数未设置,但是,如果我像这样修改我的测试: 同样,如果我从组件中移除<
我有maven surefire插件pom.xml: 现在我希望maven只在部署目标上执行测试,因此: 当执行mvn部署测试应该运行 当执行mvn包或mvn安装时,测试不应该运行,因为目标在部署之前
以下步骤将演示如何执行速度测试: 使用第10章EAP作为指南安装和配置JRadius Simulator。 通过增加请求线程和每线程请求的值来测试FreeRADIUS的响应时间,观察FreeRADIUS达到饱和点的值。 测试在FreeRADIUS服务器上完成典型事务的持续时间。 例如,如果您是Eduroam的一部分,您可以记录您支持的各种EAP方法的持续时间。 您还可以测试计费请求的速度。 刚刚发
我在Angular 4中创建了一些测试。我有一个组件正在使用PrettyJsonCompont,以便向用户显示格式良好的json。 当我运行ng test时,我的几个组件测试以相同的消息失败。 失败:类型PrettyJsonComponent是两个模块声明的一部分:PrettyJsonModule和DynamicTestModule!请考虑将PrettyJsonComponent移动到导入Pret
问题内容: 将模块插入项目后,如何在该模块中运行测试用例? 即我做了: 然后尝试测试其中的内容: 我们是否应该单独检查模块并进行测试?我不知道该怎么办。看来,当我知道如何找到已获取的模块时,但是当我使用它时,它在路径中“找不到”。 问题答案: 需要包,而不是相对于的文件夹。 因此,省略开头和结尾的文件名,它将起作用: 如果当前目录是您要测试的软件包文件夹,您甚至可以忽略它,例如 作为参考,请参阅C