Angular 测试 - 更改触发无效
Angular Testing - trigger on change not working
我有一个指令,我正在尝试对其进行单元测试,其中包括一个 on 'change' 事件:
iElement.on 'change', (evt) ->
scope.$apply () ->
scope.model.user.data.roles = iElement.val()
这是我的主要测试代码,它初始化 scope.model 然后尝试更改它。
it 'modifies the existing role - INCOMPLETE', () ->
scope.model = user: data: roles: Object.keys user.data.roles
scope.$broadcast 'event:gotUser'
scope.model.user.data.roles = ['Pizza']
scope.$digest()
element.triggerHandler('change')
console.log(element.text())
不幸的是,'change' 事件没有被触发,指令返回的值是旧值:'Delicious×Delicious'
更新
固定指令:
compiled = $compile '<div <select heli-tag-control multiple="" style="width : 100%;"> </select></div>'
到
compiled = $compile '<div heli-tag-control multiple="" style="width : 100%;"> </div>'
更新测试:
it 'modifies the existing role - INCOMPLETE', () ->
scope.model = user: data: roles: Object.keys user.data.roles
scope.$broadcast 'event:gotUser'
scope.model = user: data: roles: ['Happy', 'Banana']
element.val(scope.model.user.data.roles).triggerHandler('change')
expect(element.text()).to.contain 'Banana'
事实证明,我只需要再次广播我的 'gotUser' 事件,然后传播更改。
完成测试:
it 'modifies the existing role - INCOMPLETE', () ->
scope.model = user: data: roles: Object.keys user.data.roles
scope.$broadcast 'event:gotUser'
scope.model = user: data: roles: ['Happy', 'Banana']
element.val(scope.model.user.data.roles).triggerHandler('change')
scope.$broadcast 'event:gotUser'
expect(element.text()).to.contain 'Banana'
我有一个指令,我正在尝试对其进行单元测试,其中包括一个 on 'change' 事件:
iElement.on 'change', (evt) ->
scope.$apply () ->
scope.model.user.data.roles = iElement.val()
这是我的主要测试代码,它初始化 scope.model 然后尝试更改它。
it 'modifies the existing role - INCOMPLETE', () ->
scope.model = user: data: roles: Object.keys user.data.roles
scope.$broadcast 'event:gotUser'
scope.model.user.data.roles = ['Pizza']
scope.$digest()
element.triggerHandler('change')
console.log(element.text())
不幸的是,'change' 事件没有被触发,指令返回的值是旧值:'Delicious×Delicious'
更新
固定指令:
compiled = $compile '<div <select heli-tag-control multiple="" style="width : 100%;"> </select></div>'
到
compiled = $compile '<div heli-tag-control multiple="" style="width : 100%;"> </div>'
更新测试:
it 'modifies the existing role - INCOMPLETE', () ->
scope.model = user: data: roles: Object.keys user.data.roles
scope.$broadcast 'event:gotUser'
scope.model = user: data: roles: ['Happy', 'Banana']
element.val(scope.model.user.data.roles).triggerHandler('change')
expect(element.text()).to.contain 'Banana'
事实证明,我只需要再次广播我的 'gotUser' 事件,然后传播更改。
完成测试:
it 'modifies the existing role - INCOMPLETE', () ->
scope.model = user: data: roles: Object.keys user.data.roles
scope.$broadcast 'event:gotUser'
scope.model = user: data: roles: ['Happy', 'Banana']
element.val(scope.model.user.data.roles).triggerHandler('change')
scope.$broadcast 'event:gotUser'
expect(element.text()).to.contain 'Banana'