我有一个控制器,它从中获取值$scope
并将其发送到其他状态:
controllers.controller('SearchController', ['$scope', '$state', '$stateParams',
function($scope, $state, $stateParams) {
$scope.search = function() {
$stateParams.query = $scope.keyword;
$state.go('search', $stateParams);
};
}]);
我不确定如何对该测试方法进行单元测试。我该如何验证go方法已被调用或对when($state.go('search', $stateParams)).then(called = true);
Karma / AngularJS进行某种处理?
这两种声音听起来都可以用Jasmine间谍来完成。
describe('my unit tests', function() {
beforeEach(inject(function($state) {
spyOn($state, 'go');
// or
spyOn($state, 'go').andCallFake(function(state, params) {
// This replaces the 'go' functionality for the duration of your test
});
}));
it('should test something', inject(function($state){
// Call something that eventually hits $state.go
expect($state.go).toHaveBeenCalled();
expect($state.go).toHaveBeenCalledWith(expectedState, expectedParams);
// ...
}));
});
这里有一个很好的间谍的cheatsheet http://tobyho.com/2011/12/15/jasmine-spy-
cheatsheet/
或实际茉莉花文档在这里。
使用间谍的好处是,除非您明确告知,否则它将避免实际执行状态转换。如果状态转换更改了URL,则它将使您在Karma中的单元测试失败。
英文原文:http://emberjs.com/guides/testing/testing-routes/ 单元测试方案和计算属性与之前单元测试基础中说明的相同,因为Ember.Route集成自Ember.Object。 路由测试可以通过集成测试或者单元测试来进行。集成测试对路由的测试具有更好地覆盖性,因为路由通常用来执行过渡和数据加载,这些测试在完整上下文中更加容易测试,而独立上下文则没有那么
问题内容: 我正在尝试测试一些视图,这些视图用于链接到应用程序中的其他状态。在我的测试中,我触发了对此元素的点击,如下所示: 如果状态切换为,该如何测试?在我的控制器中像这样使用时,这很容易: 但是当我使用时,我不知道要监视什么对象。如何验证我的应用程序处于正确状态? 问题答案: 我自己找到的。在查看了角度ui路由器源代码后,我在指令中找到了以下行: 当元素收到点击时,会包装在回调中。因此,在测试
问题内容: 正如我们在http://docs.angularjs.org/tutorial/step_07中看到的那样, 建议通过e2e测试来完成路由测试, 但是,我认为’$ routeProvider’配置是通过单个函数function($ routeProvider)完成的,我们应该能够在不涉及浏览器的情况下进行单元测试,因为我认为路由功能不需要浏览器DOM。 例如, 当url为/ foo时,
问题内容: 我正在使用酶+摩卡+柴来测试我的react-redux项目。酶提供浅浅以测试组件的行为。但是我没有找到测试路由器的方法。我正在使用如下的react- router: 我要测试此路由参考组件。如何在reactjs项目中对其进行测试? 编辑1 我正在使用作为路由器框架。 问题答案: 您可以将路由器包装在组件中以对其进行测试。 Routes.jsx index.js 然后,您必须对组件进行浅
问题内容: 我正在使用Gorilla mux和net / http包来创建一些路由,如下所示 我正在尝试编写测试以测试这些路线。例如,我正在尝试测试路由,特别是试图返回的路由,因此我有以下测试代码。 但是,当我运行此测试时,可以想象得到是因为请求未正确路由。 当我从浏览器测试此GET路由时,它确实返回,因此我确定测试的设置方式存在问题。 问题答案: 在这里使用init()是可疑的。它仅在程序初始化
问题内容: 这是一个具有提交功能的控制器: 这是我的考验 我得到的错误是: views / appBar.html是我的templateUrl: 因此,以某种方式ui-router使我的$ httpBackend指向此位置而不是我的提交功能。使用$ httpBackend进行的所有测试都存在相同的问题。 有什么解决办法吗? 问题答案: 采取这个要点 https://gist.github.com/