大佬教程收集整理的这篇文章主要介绍了单元测试 – Angularjs:angular-phonecat教程应用程序首次单元测试失败,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
按照http://docs.angularjs.org/tutorial/step_02上的教程找到第一个单元测试(由于scope.phones.length为3而应该通过)失败.
INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/ INFO [launcher]: StarTing browser Chrome INFO [Chrome 30.0.1599 (Mac OS X 10.8.5)]: Connected on socket BdjA1lVT9OOo8kgQKLYs Chrome 30.0.1599 (Mac OS X 10.8.5) PhoneCat controllers PhoneListCtrl should create "phones" model with 3 phones Failed ReferenceError: PhoneListCtrl is not defined at null.<anonymous> (/Applications/MAMP/htdocs/angular-phonecat/test/unit/controlleRSSpec.js:12:22) Chrome 30.0.1599 (Mac OS X 10.8.5): Executed 2 of 2 (1 Failed) (0.37 secs / 0.033 secs)
所以基本上,它声明没有定义PhoneListCtrl.然而,应用程序运行正常,我真的不知道从哪里开始考虑我在教程的开头!
这是我的单元测试,这是本教程的默认值.
测试/单元/ controllerSpec.js
'use Strict'; /* jasmine specs for controllers go here */ describe('PhoneCat controllers',function() { describe('PhoneListCtrl',function(){ beforeEach(module('phonecatApp')); it('should create "phones" model with 3 phones',function() { var scope = {},ctrl = new PhoneListCtrl(scopE); expect(scope.phones.length).toBe(3); }); it('should create "phones" model with 3 phones',inject(function($controller) { var scope = {},ctrl = $controller('PhoneListCtrl',{$scope:scopE}); expect(scope.phones.length).toBe(3); })); }); });
应用程序/ JS / controller.js
'use Strict'; /* Controllers */ var phonecatApp = angular.module('phonecatApp',[]); phonecatApp.controller('PhoneListCtrl',function PhoneListCtrl($scopE) { $scope.phones = [ {'name': 'Nexus S','snippet': 'Fast just got faster with Nexus s.'},{'name': 'Motorola XOOM™ with Wi-Fi','snippet': 'The Next,Next Generation tablet.'},{'name': 'MOTOROLA XOOM™',Next Generation tablet.'} ]; $scope.Hello = "Hello World"; });
config / karma.conf.js http://pastebin.com/PPWjSmyJ
当您以角度定义控制器时,它不是可以使用新Controller(…)初始化的全局可用对象.你必须从角度请求它.
您的第二个测试(似乎正在通过)通过注入$controller服务来执行此操作,该服务将执行设置和请求控制器所需的任何操作.
inject(function($controller) { ... });
然后它使用此服务创建控制器
var scope = {},{$scope:scopE});
在第一次测试中,您尝试直接使用PhoneListCtrl变量.正如错误所述,除非您在函数中定义具有该名称的变量,否则这不存在.
我刚刚注意到教程中的测试失败了.如果您已在全局命名空间上定义了控制器,则特别适用于此.例如
function PhoneListCtrl($scopE) { $scope.phones = [ {'name': 'Nexus S',Next Generation tablet.'} ]; $scope.Hello = "Hello World"; }; phonecatApp.controller('PhoneListCtrl',PhoneListCtrl);
然后测试将起作用,因为您具有全局定义的功能,用作控制器,因此您可以测试它而无需关注它是控制器的事实.这意味着如果您尝试使用其他服务,则必须自己注入并执行$controller将为您执行的任何操作.
以上是大佬教程为你收集整理的单元测试 – Angularjs:angular-phonecat教程应用程序首次单元测试失败全部内容,希望文章能够帮你解决单元测试 – Angularjs:angular-phonecat教程应用程序首次单元测试失败所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。