【发布时间】:2014-07-02 15:41:45
【问题描述】:
我在指令中有这样的代码:
$document.bind('keydown', function ($event) {
if ($event && $scope.visible && $event.which === escapeKey) {
$scope.toggle();
$scope.$apply();
}
});
我想测试用户单击转义开关是否会运行。目前我有这样的测试:
it('should toggle window visibility to false when keypress escape', function () {
var doc,
$event;
$httpBackend.when(method, url)
.respond(template);
$event = {
event: 'keydown'
};
directive = createDirective();
$httpBackend.flush();
$isolateScope = directive.isolateScope();
$isolateScope.toggle();
$document.triggerHandler('keydown');
});
但是我怎样才能通过那个特定的键被按下以为 triggerHandler.不想使用任何 jQuery 。有没有其他测试方法?
【问题讨论】:
-
您可以编写一个普通的 JS 代码来触发事件,尽管请查看此答案以了解一些特定的浏览器问题:stackoverflow.com/questions/22574431/…
-
我尝试进行测试,但我在 Phantomjs 中遇到了与其他人一样的错误,但这仍然是一个很好的提示,并会尝试遵循这一点。
-
看看上面的链接:我刚刚更新了答案,支持 PhantomJS 和 Safari。 ;)
标签: angularjs angularjs-directive karma-runner karma-jasmine