Parcourir la source

add options template tests (#2968)

* add options template tests

ref: #2872

* fix runtime error and warning optimaize

* update invalid template
kazuya kawaguchi il y a 10 ans
Parent
commit
05235942a7

+ 4 - 1
src/entries/web-runtime-with-compiler.js

@@ -26,7 +26,10 @@ Vue.prototype.$mount = function (el: string | Element): Component {
       } else if (template.nodeType) {
         template = template.innerHTML
       } else {
-        warn('invalid template option:' + template, this)
+        if (process.env.NODE_ENV !== 'production') {
+          warn('invalid template option:' + template, this)
+        }
+        return this
       }
     } else if (el) {
       template = getOuterHTML(el)

+ 53 - 0
test/unit/features/options/template.spec.js

@@ -0,0 +1,53 @@
+import Vue from 'vue'
+
+describe('Options template', () => {
+  let el
+  beforeEach(() => {
+    el = document.createElement('script')
+    el.type = 'x-template'
+    el.id = 'app'
+    el.innerHTML = '<p>{{message}}</p>'
+    document.body.appendChild(el)
+  })
+
+  afterEach(() => {
+    document.body.removeChild(el)
+  })
+
+  it('basic usage', () => {
+    const vm = new Vue({
+      template: '<div>{{message}}</div>',
+      data: { message: 'hello world' }
+    }).$mount()
+    expect(vm.$el.tagName).toBe('DIV')
+    expect(vm.$el.textContent).toBe(vm.message)
+  })
+
+  it('id reference', () => {
+    const vm = new Vue({
+      template: '#app',
+      data: { message: 'hello world' }
+    }).$mount()
+    expect(vm.$el.tagName).toBe('P')
+    expect(vm.$el.textContent).toBe(vm.message)
+  })
+
+  it('DOM element', () => {
+    const elm = document.createElement('p')
+    elm.innerHTML = '<p>{{message}}</p>'
+    const vm = new Vue({
+      template: elm,
+      data: { message: 'hello world' }
+    }).$mount()
+    expect(vm.$el.tagName).toBe('P')
+    expect(vm.$el.textContent).toBe(vm.message)
+  })
+
+  it('invalid template', () => {
+    new Vue({
+      template: Vue,
+      data: { message: 'hello world' }
+    }).$mount()
+    expect('invalid template option').toHaveBeenWarned()
+  })
+})