Angularjs jasmine测试用于监视点击不起作用
我一直在尝试用angular为下面的代码编写测试Angularjs jasmine测试用于监视点击不起作用,angularjs,unit-testing,dom,coffeescript,jasmine,Angularjs,Unit Testing,Dom,Coffeescript,Jasmine,我一直在尝试用angular为下面的代码编写测试 $scope.openFileWindow = -> $timeout -> $('#profile-pic-input').trigger 'click' 到目前为止,我已经提供了以下代码 @timeout = $injector.get '$timeout' @windowSpy = spyOnEvent('#profile-pic-input', 'click') it 'should open file w
$scope.openFileWindow = ->
$timeout ->
$('#profile-pic-input').trigger 'click'
到目前为止,我已经提供了以下代码
@timeout = $injector.get '$timeout'
@windowSpy = spyOnEvent('#profile-pic-input', 'click')
it 'should open file window', ->
@scope.openFileWindow()
@timeout.flush()
expect(@windowSpy).toHaveBeenTriggered()
我面临的问题是@WindowSpy根本不起作用;在没有@windowSpy和@windowSpy的情况下运行代码expect@windowSpy.toHaveBeenTriggered通过测试
更新:
我已经将我的代码修改为下面的代码,测试通过了,但这是一种有效的方法吗
$('body').append('<div id="profile-pic-input"></div>')
it 'should open file window', ->
@scope.openFileWindow()
@timeout.flush()
@expect(@scope.openFileWindow).toBeTruthy()
我不应该期望你被解雇expect@windowSpy.toHaveBeenTriggered?是否在控制器或其他地方定义了$scope.openFileWindow?试图理解上下文。是的,它是在controller@ShuheiKagawa我也用expectwindowSpy测试了它,但它不起作用。im正在更新当单元测试控制器时,通常不存在DOM。控制器函数$'profile-pic-input'中的以下选择器将找不到任何内容。与传递给spyOnEvent的选择器相同。