Angular Controller中的方法很少,它们不在scope变量上。
有谁知道,我们如何在Jasmine测试中执行或调用这些方法?
这是主要代码。
var testController = TestModule.controller('testController', function($scope, testService)
{
function handleSuccessOfAPI(data) {
if (angular.isObject(data))
{
$scope.testData = data;
}
}
function handleFailureOfAPI(status) {
console.log("handleFailureOfAPIexecuted :: status :: "+status);
}
// this is controller initialize function.
function init() {
$scope.testData = null;
// partial URL
$scope.strPartialTestURL = "partials/testView.html;
// send test http request
testService.getTestDataFromServer('testURI', handleSuccessOfAPI, handleFailureOfAPI);
}
init();
}
现在,在我的茉莉花测试中,我们正在传递“ handleSuccessOfAPI”和“ handleFailureOfAPI”方法,但是这些是未定义的。
这是茉莉花测试代码。
describe('Unit Test :: Test Controller', function() {
var scope;
var testController;
var httpBackend;
var testService;
beforeEach( function() {
module('test-angular-angular');
inject(function($httpBackend, _testService_, $controller, $rootScope) {
httpBackend = $httpBackend;
testService= _testService_;
scope = $rootScope.$new();
testController= $controller('testController', { $scope: scope, testService: testService});
});
});
afterEach(function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
it('Test controller data', function (){
var URL = 'test server url';
// set up some data for the http call to return and test later.
var returnData = { excited: true };
// create expectation
httpBackend.expectGET(URL ).respond(200, returnData);
// make the call.
testService.getTestDataFromServer(URL , handleSuccessOfAPI, handleFailureOfAPI);
$scope.$apply(function() {
$scope.runTest();
});
// flush the backend to "execute" the request to do the expectedGET assertion.
httpBackend.flush();
// check the result.
// (after Angular 1.2.5: be sure to use `toEqual` and not `toBe`
// as the object will be a copy and not the same instance.)
expect(scope.testData ).not.toBe(null);
});
});
因为您将无法使用这些功能。当您定义一个命名的JS函数时,就像您要说的一样
var handleSuccessOfAPI = function(){};
在这种情况下,可以很清楚地看到var仅在块内的范围内,并且包装控制器没有外部引用。
可以离散调用(因此已测试)的任何功能将在控制器的$ scope上可用。
问题内容: 我试图弄清楚控制器继承是如何工作的。我有三个控制器: 和我的看法 但它们都显示“主要”。我该如何解决? 这是一个小提琴http://jsfiddle.net/g3xzh4ov/3/ 问题答案: 这是一个如何在Angular中扩展控制器的示例。 它要求使用,它取代有,它是这样的情况特别好。 注意,它是在幕后使用的,而不是其他Angular服务类型的用法,因此可以将语句从控制器直接带到单独
我有这段代码,我看不出问题的根源在哪里,我在chrome控制台我的控制器中没有发现任何错误: 和在div-loadedthings中正确加载; 控制台中的newMsgs按照它应该的方式进行解析; 我让它为其他页面工作,但似乎我错过了这一页上的一些东西。我有
问题内容: 我正在使用spring 3.2.0和junit 4 这是我需要测试的控制器方法 spring-servlet config is: This is my test class : 如何使用MockMvc测试此方法? 问题答案: 你可以使用以下注释来使用应用程序调度程序servlet xml。以下示例使用路径/ mysessiontest设置了一些会话属性并期望返回某个视图来命中控制器:
问题内容: WebStorm中提供了一种运行和调试量角器Web测试的方法。我只想在这里分享这个答案 问题答案: 获取节点路径(在终端中输入) 在WebStorm中:单击“ 编辑配置 ”-“ 运行 ”按钮左侧的下拉菜单(绿色箭头,类似于“播放”按钮) 单击“添加按钮”(绿色 + )以添加新的Node配置。选择“ Node.js ” 填写参数: 节点解释器 :Node.js的完整路径(从步骤1开始)
英文原文:http://emberjs.com/guides/testing/testing-controllers/ 单元测试方案和计算属性与之前单元测试基础中说明的相同,因为Ember.Controller集成自Ember.Object。 针对控制器的单元测试使用ember-qunit框架的moduleFor来做使这一切变得非常简单。 测试控制器操作 下面给出一个PostsController
我有下一个Rest控制器 我将Spring Security用于以下配置: 我想为我的控制器编写单元测试。我写了下一个测试,但是它们工作得不好: 当我开始测试时,我得到了状态404。如果在安全配置中删除@EnableGlobalmetodSecurity(prePostEnable=true),测试正在工作,但不工作@PreAuthorize。我有一些问题: 如果prespenabled=true