使用 Jasmine 在角度范围内测试 JavaScript 函数
Testing javascript function within angular scope using jasmine
>我在angularjs中创建了一个应用程序,我学会了为angularjs编写jasmine单元测试用例,但问题是在我的应用程序中,我既有角度范围方法,也有普通的JavaScript函数,当我为该函数编写测试用例时,我得到以下异常
ReferenceError: isInvalid is not defined
at null.<anonymous> (http://fiddle.jshell.net/_display/:83:16)
at jasmine.Block.execute (http://jasmine.github.io/1.3/lib/jasmine.js:1064:17)
at jasmine.Queue.next_ (http://jasmine.github.io/1.3/lib/jasmine.js:2096:31)
at jasmine.Queue.start (http://jasmine.github.io/1.3/lib/jasmine.js:2049:8)
at jasmine.Spec.execute (http://jasmine.github.io/1.3/lib/jasmine.js:2376:14)
at jasmine.Queue.next_ (http://jasmine.github.io/1.3/lib/jasmine.js:2096:31)
at onComplete (http://jasmine.github.io/1.3/lib/jasmine.js:2092:18)
at jasmine.Spec.finish (http://jasmine.github.io/1.3/lib/jasmine.js:2350:5)
at null.onComplete (http://jasmine.github.io/1.3/lib/jasmine.js:2377:10)
at jasmine.Queue.next_ (http://jasmine.github.io/1.3/lib/jasmine.js:2106:14)
工作演示
angular.module('myApp',[]).controller("Controller", function($scope) {
$scope.addNumbers = function(val1, val2) {
var result = isInvalid(val1) + isInvalid(val2),
tax = 6,
watt = 5;
return (result + tax + watt);
};
});
function isInvalid(value) {
if( value=== null || value === undefined || value === '' ||isNaN(parseInt(value)))
{
return 0;
}
else
{
return value;
}
}
describe('Testing a controller', function() {
beforeEach(module("myApp"));
var ctrl, scope;
beforeEach(inject(function($controller, $rootScope) {
scope = $rootScope.$new();
ctrl = $controller("Controller", {
$scope: scope
});
}));
it('test add numbers', function() {
expect(scope.addNumbers(2,6)).toMatch(19);
});
it('test isInvalid', function() {
expect(isInvalid(6)).toMatch(6);
});
});
(function() {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var trivialReporter = new jasmine.TrivialReporter();
jasmineEnv.addReporter(trivialReporter);
jasmineEnv.specFilter = function(spec) {
return trivialReporter.specFilter(spec);
};
$(function() {
jasmineEnv.execute();
});
})();
isInvalid
是在控制器函数的作用域内定义的。要对其进行测试,您应该在控制器的作用域(公共)之外定义函数,或者在$scope
对象中注册它。基本上,茉莉花不能看控制器内部。
相关文章:
- 用于测试javascript中异步加载的脚本的工具
- 是否可以测试javascript函数是否是构造函数
- 使用jasmine测试JavaScript回调函数
- 测试 JavaScript Zombie 事件处理程序或 DOM 元素
- 测试JavaScript是否符合异常变量名
- 使用 Capybara 和 Minitest 来测试 JavaScript
- 在CakePHP中测试JavaScript
- Eclipse和Tomcat中的网站开发和测试:javascript被缓存
- 如何使用moment.js测试javascript对象是否为Date
- 在Rails中准确测试JavaScript分析交付系统
- 如何在经过身份验证的页面上测试javascript隐藏/显示行为
- 在 Rails 中测试 JavaScript 视图
- 使用 nodeunit 测试 JavaScript 库 - FileApi, substr undefined
- 如何加载测试 JavaScript/AngularJS 应用程序
- 用Selenium测试javascript生成的html
- 如何测试 javascript 方法是否创建一个对象并调用该对象上的方法
- 测试Javascript框架
- 在浏览器中测试 JavaScript 脚本,而无需创建 html/javascript 测试文件
- 使用 Mocha 测试 JavaScript - 如何使用 console.log 来调试测试
- 如何对 Web 套接字进行单元测试 - JavaScript