2017-08-01 4 views
0

Ich versuche, einen Beobachter auf einer Requisite in einer Vue-Komponente zu testen. Ich benutze Karma + Jasmin. Aber es scheint, dass Beobachter auf Requisiten nicht im Komponententest ausgelöst werden.Vuejs Komponententest - Beobachter auf Requisiten

Hier ist eine einfache Komponente:

export default { 
    name: 'hello', 
    data: function() { 
     return { 
      b: null 
     }; 
    }, 
    props: { 
     a: { 
      type: String, 
      default: null 
     } 
    }, 
    watch: { 
     a(val) { 
      this.b = val; 
     } 
    }, 
    computed: { 
     c() { 
      return this.a + " computed"; 
     } 
    } 
} 

und hier ist mein Test:

describe('Hello',() => { 
const HelloCtor = Vue.extend(Hello); 
let vm; 

beforeEach(() => { 
    vm = new HelloCtor({ 
     propsData: { 
      a: "hello" 
     } 
    }).$mount(); 
}); 

afterEach(() => { 
    vm.$destroy(); 
}); 

it('should watch a and compute c', (done) => { 
    vm.$nextTick(() => { 
     expect(vm.c).toBe("hello computed"); 
     expect(vm.b).toBe("hello"); 
     done(); 
    }); 
}); 
}); 

In der behauptet, 'c' berechnet wird, korrekt aber 'b' ist immer null. Wenn ich 'a' zu Daten bewege, funktioniert alles perfekt. Hinweis: Wenn ich meine App manuell in meinem Browser teste, werden Beobachter auf Requisiten genau wie die auf der Datenvariablen ausgelöst.

Irgendwelche Ideen, wie man es testet?

Antwort

0

b ist immer null, weil a nicht geändert wurde, nachdem Sie begonnen haben, nach Änderungen zu suchen.

Der Watcher wird nicht ausgelöst, wenn Sie eine Variable beobachten, sie wird nur ausgelöst, wenn sich ihr Wert ändert.

+0

Danke, du zeigst auf meinen Fehler, ich vermutete, dass Beobachter ein erstes Mal während des Montierens ausgelöst wurden. – budgw

Verwandte Themen