我的代码在下面,有人可以进入jslint并粘贴我的代码,并告诉我为什么我的错误正在发生和修复。 例如,它描述了'描述'在定义之前使用,但在angularjs网站上的页面中,它们不显示任何定义。 另一个错误是"意外的角色''。"。在第2行的字符42.由于没有遗漏空间,所以也是假的。
describe('forgotPasswordCtrl', function () {
beforeEach(module('forgotPasswordApp'));
var $controller;
var returnMsg = 'Forgot password response message';
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
describe('$scope.finish', function(){
it('returns a -forgot password response- message', function(){
var $scope = {};
var controller = $controller('forgotPasswordCtrl', { $scope: $scope });
$scope.finish();
expect($scope.globalError).toEqual(returnMsg);
});
});
describe('$scope.cancel', function(){
it('assigns a url depending on a customer match happens', function(){
var $scope = {};
var controller = $controller('forgotPasswordCtrl', { $scope: $scope });
$scope.cancel();
expect(window.location.assign).toEqual("/web/tfgm_customer");
});
});
答案 0 :(得分:1)
哇。好的,所以你并不总是能够正确地使用lint库。如果这个代码应该在上下文中工作,那么就会有很多意大利面。
这是我对你所给予的最好的猜测。让我知道我的错误。
注意:您需要在文件顶部添加一些/*jslint ... */
指令。
sloppy:true
:允许您不使用'use strict'white:true
:允许不分青红皂白的空白nomen:true
:在变量名称的开头和结尾处允许下划线(_
)。browser:true
:此处允许使用window
。还要注意/*global ... */
指令,在这里你可以放置所有这些函数,由于某些奇怪的原因,这些函数不会存在于名称空间中。
我们走了:
/*jslint sloppy:true, white:true, nomen:true, browser:true */
/*global describe, module, beforeEach, inject, it, expect */
// You have some bad scoping below. I *think* you expect
// $controller, controller, & returnMsg to exist in full
// script scope.
var returnMsg, $controller = null, controller = null;
describe('forgotPasswordCtrl', function () {
beforeEach(module('forgotPasswordApp'));
returnMsg = 'Forgot password response message';
beforeEach(inject(function(_$controller_){
// You're never doing anything with this.
// JSLint wants to know why not.
$controller = _$controller_;
}));
});
describe('$scope.finish', function(){
it('returns a -forgot password response- message', function(){
var $scope = {};
controller = $controller('forgotPasswordCtrl', { $scope: $scope });
$scope.finish();
expect($scope.globalError).toEqual(returnMsg);
});
});
describe('$scope.cancel', function(){
it('assigns a url depending on a customer match happens', function(){
var $scope = {};
controller = $controller('forgotPasswordCtrl', { $scope: $scope });
$scope.cancel();
expect(window.location.assign).toEqual("/web/tfgm_customer");
});
});
$controller.usedSomehow(); // to make JSLint happy. Please use.
controller.usedSomehowAsWell(); // to make JSLint happy. Please use.
老实说,这里有很多古怪的事情,我不知道该怎么做。我想你需要给我们一个更好的描述你认为你在做什么(显然(?)单元测试的东西),但像... ...
var $scope = {};
controller = $controller('forgotPasswordCtrl', { $scope: $scope });
没有多大意义。 $ scope是一个对象,您传递给传递给$ controller的anon对象中也称为$ scope的属性?为什么?为什么不......
controller = $controller('forgotPasswordCtrl', { $scope: {} });
......?我的猜测是你在这段代码的不同scopes周围发生了很多事情,你需要先确定它们才能真正开始你的代码。
那就是按原样工作吗?
评论后编辑:
如果你得到这样的东西......
Unexpected character '(space)'.
beforeEach(module('forgotPasswordApp'));
...那是因为你在JSLint指令中没有white:true
。请查看JSLint instructions page以获取有关所有这些选项的更多信息,其中包含white
:
true
如果应该忽略严格的空格规则。
您看到的错误有点误导。如果您的行末尾有任何尾随空格,则可能会抛出该错误。
答案 1 :(得分:0)
我看了一下JSHint所说的内容。 JSHint不如JSLint严格,更易于阅读,但功能较少。
你错过了一个括号和一个括号。它对很多事情都说“未定义”,因为你没有定义很多东西,从“describe”函数开始。您正在使用尚未声明的全局函数和变量。如果由另一个脚本/库添加,jslint或jshint不会为你猜测它。如果您希望停止投诉,只需在顶部添加一行var describe, module, beforeEach, inject, it, expect;