查看Mastering Web Applications in AngularJS的示例:
angular.module('archive', [])
.factory('notificationsArchive', function () {
var archivedNotifications = [];
return {
archive:function (notification) {
archivedNotifications.push(notification);
},
getArchived:function () {
return archivedNotifications;
}};
});
然后,模块的测试:
describe('notifications archive tests', function () {
var notificationsArchive;
beforeEach(module('archive'));
beforeEach(inject(function (_notificationsArchive_) {
notificationsArchive = _notificationsArchive_;
}));
it('should give access to the archived items', function () {
var notification = {msg: 'Old message.'};
notificationsArchive.archive(notification);
expect(notificationsArchive.getArchived())
.toContain(notification);
});
});
第二个beforeEach(inject ...
发生了什么?
答案 0 :(得分:2)
beforeEach(inject(function (_notificationsArchive_) {
notificationsArchive = _notificationsArchive_;
}));
在每次测试之前,只需说出一个notificationArchive实例。然后,它将该实例分配给可在实际测试用例中使用的变量。 notificationsArchive周围的下划线只是语法糖,因此您不必为测试用户的变量提供另一个名称。
答案 1 :(得分:2)
它将notificationsArchive服务注入到一个函数中,该函数将该服务分配给本地变量" notificationsArchive"在每次测试之前。名称中的下划线将被忽略。
https://docs.angularjs.org/api/ngMock/function/angular.mock.inject