您好,我正在用Jasmine编写我的第一个角度测试,但是我一直收到错误消息
------测试开始:文件:C:\ Users \ Regan \ Documents \ Visual Studio 2013 \ WebSites \
Regan \ testApp \ TestProject \ ng-tests \ MainCtrlSpec.js
------使用内联测试’MainCtrl模拟:应该有标签失败的错误:[$ injector:unpr]未知提供程序:$ scopeProvider <-$
scope <-MainCtrl
我尝试过玩,但是卡住了。如果您发现问题,请告诉我。如果还需要更多代码,请告诉我,但我认为问题出在这两个文件中。
MainCtrlSvc.js
/// <reference path="../../Scripts/angular/angular.js" />
/// <reference path="../../Scripts/angular/angular-mocks.js" />
/// <reference path="../../Scripts/chartjs/Chart.js" />
/// <reference path="../../Scripts/angular-chart.js-master/dist/angular-chart.js" />
/// <reference path="../../Scripts/controller/main-controller.js" />
/// <reference path="../../Scripts/service/data-service.js" />
/// <reference path="../../libs/jasmine/jasmine.js" />
describe("MainCtrl with inline mock", function () {
beforeEach(module("ChartApp"));
var ctrl, mockDataSrv;
beforeEach(module(function($provide) {
mockDataSrv = {
labels: ["Reading", "Coding", "Thinking About Coding", "Reddit", "StackOverflow"],
data: [500, 300, 300, 40, 220],
type: "PolarArea",
title: "Angular Chart Expriment"
};
$provide.value("DataSrv", mockDataSrv);
}));
beforeEach(inject(function ($controller) {
ctrl = $controller("MainCtrl");
}));
it("should have lables", function () {
expect(scope.labels).toBeDefined();
});
});
MainCtrl.js
var app = angular.module("ChartApp", ["chart.js"]);
app.controller("MainCtrl", ["$scope",
function ($scope, DataSrv) {
$scope.labels = DataSrv.labels;
$scope.data = DataSrv.data;
$scope.type = DataSrv.type;
$scope.title = DataSrv.title;
}
]);
由于没有$scope
服务,$controller
提供程序无法实例化注入的$scope
参数。
您需要在使用$controller
提供程序实例化控制器时提供范围。您可以注入$rootScope
setUp,并通过执行操作获得子作用域$rootScope.$new()
。将其作为参数传递给$controller
构造方法。即$controller("MainCtrl", {$scope:scope })
,范围是新的子范围,即使您可以传入$ rootScope。
即
var ctrl, mockDataSrv, scope;
//... Your code
//...
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new(); //get a childscope
ctrl = $controller("MainCtrl", {$scope:scope }); //Pass it as argument as $scope's value
}));
我是angular和jhipster的新手,我已经编辑了登录组件,添加了formbuilder和MatDialogRef,并更新了单元测试:
问题内容: 我很难确定在我的角度应用程序中有哪些方法会导致错误: 只有在JavaScript被ASP.Net捆绑并缩小后,才会发生这种情况。 我已经确保所有控制器以及任何其他DI使用的是缩小安全方法,IE我的控制器/服务等都使用了以下方法: 我遍历了我们应用程序中的每个JS文件-有很多…并且找不到任何违反这种注入依赖关系方式的内容-尽管一定有一个地方… 是否有更好的方法来确定可能导致此错误的方法?
问题内容: 我有一个奇怪的问题。我想在我的AngularJS项目中包含angular-animate-我正在使用AngularJS v1.2.6。我已添加到我的凉亭文件。它已下载并添加到源代码中的HTML文件中,并且指向正确的文件(已在浏览器中加载)。现在我需要将其添加为依赖项,因此将模块添加到我的应用中… 但是,一旦Grunt开始检测文件更改并生成,我会收到以下错误: 我检查了拼写,遵循了htt
问题内容: 我正在尝试“定制” mongolab示例以适合我自己的REST API。现在我遇到了这个错误,我不确定自己在做什么错: 这是我的控制器: 这是模块: 问题答案: 您的代码看起来不错,实际上,当将其复制并粘贴到示例jsFiddle中时,它可以正常工作(除了调用本身): http //jsfiddle.net/VGaWD/ 很难说发生了什么而没有看到更完整的示例,但是我希望上面的jsFid
关于测试提供程序,我有几个问题: 在进行测试之前,是否需要启动提供程序服务?我应该在测试中到达实际的提供者endpoint吗?例如,假设我的提供者代码库上有一个GET/dogsendpoint。运行测试时,是否需要在本地启动服务,点击/dogsendpoint,然后用pact文件验证为该endpoint返回的响应? 如果我想将其作为配置项管道的一部分运行(我使用的是Circloci),那么有哪些最
问题内容: 我正在尝试启动并运行AngularJS 1.2 RC2应用程序。目前,我一直在使用Angular Seed项目来尝试使我的应用程序启动并运行。不幸的是,Angular Seed项目使用的是v1.0.7。在Angular Seed项目中,我将依赖项更新为以下内容: 在app.js中,我具有以下内容: 当我运行此应用程序时,出现以下错误: 我已经阅读了其他一些回答,例如1)注入’ngrou