Javascript AngularJS-排序测试不起作用,但代码起作用
我意识到这一定很愚蠢,但我在AngularJS和我的脚本中的单元测试方面遇到了麻烦。代码工作正常(初始化和测试除外)。然而,端到端测试仍然有效 业力测试错误:Javascript AngularJS-排序测试不起作用,但代码起作用,javascript,angularjs,Javascript,Angularjs,我意识到这一定很愚蠢,但我在AngularJS和我的脚本中的单元测试方面遇到了麻烦。代码工作正常(初始化和测试除外)。然而,端到端测试仍然有效 业力测试错误: PhantomJS 1.9.7 (Windows 7) Controllers EventsCtrl Should set the default sort to be Start Date FAILED Expected undefined to be 'StartDate'. PhantomJS 1.9.7 (Windows
PhantomJS 1.9.7 (Windows 7) Controllers EventsCtrl Should set the default sort to be Start Date FAILED
Expected undefined to be 'StartDate'.
PhantomJS 1.9.7 (Windows 7): Executed 2 of 2 (1 FAILED) (0.004 secs / 0.009 secs)
describe('Controllers', function()
{
describe('EventsCtrl', function()
{
var scope;
var Control;
// Before Each Test - Load Module
beforeEach(module('App'));
// Before Each Test - Inject Controllers
beforeEach(inject(function($controller)
{
scope = {};
Control = $controller('EventsCtrl', {$scope:scope});
}));
it('Should create "Events" with 2 entries', function()
{
expect(Control).toBeDefined();
expect(Control).not.toBeNull();
expect(scope.Events.length).toBe(2);
});
it('Should set the default sort to be Start Date', function()
{
expect(scope.EventSort).toBe('StartDate');
});
});
});
控制器:
var App = angular.module('App', []);
App.controller('EventsCtrl', function($scope)
{
$scope.Events = [
{
'StartDate': 20140329,
'StartTime': 100000,
'Name': 'Event 1',
'Venue': 'XYZ Venue',
},
{
'StartDate': 20140208,
'StartTime': 093000,
'Name': 'Final Event',
'Venue': 'ABC Venue',
}
];
$scope.EventSort = 'StartDate';
});
HTML代码段
Sort by:
<select ng-model="EventSort">
<option value="StartDate">Earliest Date</option>
<option value="Venue">Venue</option>
</select>
<ul class="EventsList">
<li ng-repeat="EventData in Events | filter:EventsFilter | orderBy:EventSort">
{{EventData.Name}}
<p>{{EventData.StartDate}}</p>
<p>{{EventData.Venue}}</p>
</li>
</ul>
排序依据:
最早日期
地点
-
{{EventData.Name}
{{EventData.StartDate}
{{EventData.vention}
我希望考试能顺利进行
更进一步地说,我的第二个问题是,是否有一种方法可以告诉它在任何可用字段上排序,而不必详细说明它们?某种元素列表。可能对select?中的选项重复ng,我不知道这是否能解决您的问题,因为您没有告诉两个测试中的哪一个未通过以及错误消息是什么。但在第一眼看到时,尝试替换:
beforeEach(inject(function($controller)
{
scope = {};
Control = $controller('EventsCtrl', { $scope: scope });
}));
与:
谢谢大家的建议。结果证明这是一个愚蠢的错误。我已经将应用程序文件移动到事件的Modules子目录中,以便在逻辑上将所有内容与大型项目的子目录分组 我在编辑器中拥有并正在更改的代码仍然在旧的app/js目录中,而不是测试文件或网页所使用的目录
应该移动文件,而不是复制它们,直到它们工作。再次感谢您的建议。您遇到了什么样的错误?@tasseKATT抱歉,我用错误文本更新了问题。未设置默认开始日期。很抱歉,最初忘记了错误,但已使用错误更新了问题。$rootScope没有帮助,也没有纠正错误。我还没有在教程中看到$rootScope,所以可能代码的其余部分没有足够的结构。我只是在第5和第6个教程步骤附近,在教程运行时自己进行更改。
beforeEach(inject(function($controller, $rootScope)
{
scope = $rootScope.$new();
Control = $controller('EventsCtrl', {$scope:scope});
}));