properties.spec.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import Vue from 'vue'
  2. describe('Instance properties', () => {
  3. it('$data', () => {
  4. const data = { a: 1 }
  5. const vm = new Vue({
  6. data
  7. })
  8. expect(vm.a).toBe(1)
  9. expect(vm.$data).toBe(data)
  10. // vm -> data
  11. vm.a = 2
  12. expect(data.a).toBe(2)
  13. // data -> vm
  14. data.a = 3
  15. expect(vm.a).toBe(3)
  16. })
  17. it('$options', () => {
  18. const A = Vue.extend({
  19. methods: {
  20. a () {}
  21. }
  22. })
  23. const vm = new A({
  24. methods: {
  25. b () {}
  26. }
  27. })
  28. expect(typeof vm.$options.methods.a).toBe('function')
  29. expect(typeof vm.$options.methods.b).toBe('function')
  30. })
  31. it('$root/$children', done => {
  32. const vm = new Vue({
  33. template: '<div><test v-if="ok"></test></div>',
  34. data: { ok: true },
  35. components: {
  36. test: {
  37. template: '<div></div>'
  38. }
  39. }
  40. }).$mount()
  41. expect(vm.$root).toBe(vm)
  42. expect(vm.$children.length).toBe(1)
  43. expect(vm.$children[0].$root).toBe(vm)
  44. vm.ok = false
  45. waitForUpdate(() => {
  46. expect(vm.$children.length).toBe(0)
  47. vm.ok = true
  48. }).then(() => {
  49. expect(vm.$children.length).toBe(1)
  50. expect(vm.$children[0].$root).toBe(vm)
  51. }).then(done)
  52. })
  53. it('$isServer', () => {
  54. const vm = new Vue()
  55. expect(vm.$isServer).toBe(false)
  56. Vue.config._isServer = true
  57. expect(vm.$isServer).toBe(true)
  58. Vue.config._isServer = false
  59. })
  60. })