- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在这个问题上停留了一段时间,并且没有成功解决这里有关使用 requirejs 测试 uiRouter 的任何其他问题。我有一个相当基本的 Controller 设置,一旦单击按钮,它就会使用 $state.go 在状态之间进行转换。
runsController.js
define([],
function() {
"use strict"
var runsController = function($scope, $window, $http, $state) {
function getRuns() {
$http.get($window.apiLinks.runs).success(function(data) {
$scope.runs = data.objects;
}).error(function(data) {
console.error();
console.error(data);
});
}
getRuns();
$scope.refresh = getRuns;
$scope.createRun = function() {
//$state.go('createRun');
}
return ["$scope", "$window", "$http", "$state", runsController];
});
Controller 已添加到依赖于 uiRouter 的应用程序。
app.js
define(["angular", "js/controllers/runsController", "js/router", "uiRouter"],
function(angular, runsController, router) {
'use strict'
var appName = "myApp";
var app = angular.module(appName, ["ui.router"]);
app.config(router);
app.controller("runsController", runsController);
function getName() {
return appName;
}
return {
app : app,
getName : getName
};
});
路由器.js
define(["./controllers/runsController"],
function(runsController){
var routes = function($stateProvider, $urlRouterProvider) {
// For any unmatched url, redirect to /runs
$urlRouterProvider.otherwise("/runs");
// Set up the states
$stateProvider
.state('runs', {
url: "/runs",
templateUrl: "partials/runs.html",
controller: "runsController"
})
.state('createRun', {
url: "/createRun",
templateUrl: "partials/runCreator.html"
});
};
return ["$stateProvider", "$urlRouterProvider", routes];
});
这是我为此 Controller 设置的测试:
define(["angular", "angularMocks", "js/app", "js/controllers/runsController"],
function(angular, mocks, app, runsController) {
'use strict'
describe('runsController Unit Tests', function() {
var mockApp, scope, httpBackend, objects, state;
objects = [
{rid : 1, filename : "myFile.txt", exitCode : 0},
{rid : 2, filename : "test.zip", exitCode : 0},
{rid : 3, filename : "test2.tar", exitCode : 0}
];
beforeEach(function() {
mockApp = angular.module(app.getName());
});
beforeEach(inject(function ($rootScope, $controller, $httpBackend, $http, $state) {
scope = $rootScope.$new();
window.apiLinks = {"runs" : "/mock/api/runs"};
httpBackend = $httpBackend;
state = $state;
httpBackend.when("GET", "/mock/api/runs").respond({
"objects" : objects
});
$controller(runsController[4], {
$scope : scope,
$window : window,
$http : $http,
$state : $state
});
httpBackend.flush();
}));
it("Get state working in test environment", function() {
});
it("Test that controller automatically gets the runs", function() {
// Because of the way our controller files are setup, we have to specify the
// last element in the array instead of just
expect(scope.runs.length).toBe(3);
});
});
当前给我一条错误消息:错误:[$injector:unpr] 未知提供者:$stateProvider <- $state
根据我所读到的内容,我相信这意味着我需要注入(inject) Controller 运行状态所需的依赖项,但是如果我在每次运行测试之前使用该应用程序,那么依赖项应该在以下情况下存在: .config() 做得对吗?谁能帮我弄清楚我没有看到什么?
提前致谢!
最佳答案
我也遇到了同样的问题,这就是我想到的。
这非常重要:
karma.conf.js
{
pattern: 'ROOT/TO/YOUR/angular-ui-router/release/angular-ui-router.js',
included: false
},
test-main.js:这是你的 karma - require - 配置文件
paths: {
// External libraries
'angular': '/base/PATH/TO/YOUR/angular/angular',
'angularMocks': '/base/PATH/TO/YOUR/angular-mocks/angular-mocks',
'uiRouter' : '/base/PATH/TO/YOUR/angular-ui-router/release/angular-ui-router',
.....
shim: {
'angular': { 'exports': 'angular' },
'angularMocks': { deps: ['angular'], 'exports': 'angular.mock' },
'uiRouter' : {deps: ['angular'], 'exports' : 'uiRouter'},
定义模块
define([
'angular',
'angularMocks',
'uiRouter',
.....
现在,当您设置 beforeEach 时
BeforeEach(inject(function ($injector){
$state = $injector.get('$state');
....
希望这对您有所帮助。
关于javascript - 使用 requirejs 测试 uiRouter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274030/
我是 Angular 1 的新手,必须在现有的 Web 应用程序上实现新功能。该应用程序使用 jhipster 生成后端和前端的某些部分(Angular 1 和 uirouter)。 因此,我尝试使用
我正在尝试使用 ui-router resolve 获取一些数据以供在 Controller 中使用: $stateProvider .state('home', { url: '/'
我使用 UIrouter 来定义我的应用程序路由和 View 。 现在出现的问题是,每次我转到路线时,UIRouter 都会重新加载“正在进行的”路线规则中定义的每个 View ,甚至是那些未从旧路线
我已经在这个问题上停留了一段时间,并且没有成功解决这里有关使用 requirejs 测试 uiRouter 的任何其他问题。我有一个相当基本的 Controller 设置,一旦单击按钮,它就会使用 $
这让我发疯。 我的其中一个页面中有一个 HREF Click me ## ;) 这在 Chrome 上运行良好,但在 Android 上的 PhoneGap 中运行不佳。 我四处寻找,但找不到任何解决
我的页面上有两个组件:导航组件和表单组件。如果表单脏了,我想通知用户是否离开页面(通过单击导航组件或按浏览器“后退”按钮)。我已经实现了脏检查,但我不知道如何实现通知。 我正在使用 Angular 1
我正在重构 Angular 1.5 应用程序,并尝试在不拆开整个应用程序的情况下解决问题。 我的问题是这样的;我有一个带有属性的父状态 Controller 。子状态模板包含需要更新父状态属性的组件。
我想动态更改 ui-view 属性,例如每次属性更改时, View 也会更改... 我使用多个 View 如下: $stateProvider.state('main', {url:
当我单击页脚中的按钮路由到该 View 时,没有通过 ui-view 更改为正确的模板。控制台没有吐出任何错误,所以我很困惑。 这是我的状态 $stateProvider
我想做的是在新标签页或新窗口中关注: $state.go('studentsReport', { type: $scope.report.type, // string s
我正在使用最新的 Typescript 版本与 Angularjs 1.6.4 和 ui-router,使用 VS Code。 目前我正在使用@types 文件夹来定义类型。 Typescript 定
我正在尝试使用 plunker 使用 url 查询参数来演示某些内容,但我什至无法显示参数(因此无法演示我原来的问题)。 我创建了一个简单的 plunker,其中 states url 属性如下所示:
如何获取根组件中的参数? (应用程序组件.ts) 我有这样的app.component.ts(我正在使用Angular/Cli): ... import {Transition} from "@uir
我正在尝试使用 gulp-browsify 加载一个 app-release.js 文件中的所有依赖项。 该文件构建良好,但当我尝试注入(inject) @uiRouter 依赖项时,我在浏览器中收到
我正在尝试使用 gulp-browsify 加载一个 app-release.js 文件中的所有依赖项。 该文件构建良好,但当我尝试注入(inject) @uiRouter 依赖项时,我在浏览器中收到
我是一名优秀的程序员,十分优秀!