methods-events.spec.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import Vue from 'vue'
  2. describe('Instance methods events', () => {
  3. let vm, spy
  4. beforeEach(() => {
  5. vm = new Vue()
  6. spy = jasmine.createSpy('emitter')
  7. })
  8. it('$on', () => {
  9. vm.$on('test', function () {
  10. // expect correct context
  11. expect(this).toBe(vm)
  12. spy.apply(this, arguments)
  13. })
  14. vm.$emit('test', 1, 2, 3, 4)
  15. expect(spy.calls.count()).toBe(1)
  16. expect(spy).toHaveBeenCalledWith(1, 2, 3, 4)
  17. })
  18. it('$on multi event', () => {
  19. vm.$on(['test1', 'test2'], function () {
  20. expect(this).toBe(vm)
  21. spy.apply(this, arguments)
  22. })
  23. vm.$emit('test1', 1, 2, 3, 4)
  24. expect(spy.calls.count()).toBe(1)
  25. expect(spy).toHaveBeenCalledWith(1, 2, 3, 4)
  26. vm.$emit('test2', 5, 6, 7, 8)
  27. expect(spy.calls.count()).toBe(2)
  28. expect(spy).toHaveBeenCalledWith(5, 6, 7, 8)
  29. })
  30. it('$once', () => {
  31. vm.$once('test', spy)
  32. vm.$emit('test', 1, 2, 3)
  33. vm.$emit('test', 2, 3, 4)
  34. expect(spy.calls.count()).toBe(1)
  35. expect(spy).toHaveBeenCalledWith(1, 2, 3)
  36. })
  37. it('$off', () => {
  38. vm.$on('test1', spy)
  39. vm.$on('test2', spy)
  40. vm.$off()
  41. vm.$emit('test1')
  42. vm.$emit('test2')
  43. expect(spy).not.toHaveBeenCalled()
  44. })
  45. it('$off event', () => {
  46. vm.$on('test1', spy)
  47. vm.$on('test2', spy)
  48. vm.$off('test1')
  49. vm.$off('test1') // test off something that's already off
  50. vm.$emit('test1', 1)
  51. vm.$emit('test2', 2)
  52. expect(spy.calls.count()).toBe(1)
  53. expect(spy).toHaveBeenCalledWith(2)
  54. })
  55. it('$off event + fn', () => {
  56. var spy2 = jasmine.createSpy('emitter')
  57. vm.$on('test', spy)
  58. vm.$on('test', spy2)
  59. vm.$off('test', spy)
  60. vm.$emit('test', 1, 2, 3)
  61. expect(spy).not.toHaveBeenCalled()
  62. expect(spy2.calls.count()).toBe(1)
  63. expect(spy2).toHaveBeenCalledWith(1, 2, 3)
  64. })
  65. })