2017-07-13 5 views
3

私はを学習しています。私はプラグインを持っている、それは次のようになります。Vue.js - プラグインのテスト

ソース/ myPlugin.js

const MyPlugin = { 
    install: function(Vue, options) { 
    console.log('installing my plugin'); 

    Vue.myMethod = function() { 
    }; 
    } 
} 

私は冗談を使用して、このプラグインをテストしようとしています。しかし、私はJestに落ち着いていません。私は冗談を経由して、このテストを実行すると、私がインストール「を参照してください期待していた

const Vue = require('vue/dist/vue'); 
const MyPlugin = require('../source/myPlugin'); 

Vue.use(MyPlugin); 

describe('MyPlugin',() => { 
    let vm; 

    beforeEach(() => { 
     const template = `<div id="app"></div>`; 
     vm = new Vue({ 
      template 
     }).$mount(); 
    }); 

    it('should run',() => { 
     Vue.myMethod(); 
     expect(true).toEqual(true);   
    }); 
}); 

テスト/ myPlugin.test.js:それでも、この時点で、私は私のtest/myPlugin.test.jsファイルに次の持っています私のプラグイン "をコンソールウィンドウに表示します。しかし、私はしません。代わりに、私は参照してください:

TypeError: Vue.myMethod is not a function 

私は間違って何をしていますか?いくつかのテストで基本的なプラグインをセットアップしようとしています。なぜこれが動作していないのか分かりません。どんな助けもありがとうございます。

+0

試し 'vm.myMethod()' – frozen

+0

@ randnum-1と同じエラーを使用してそれを呼び出します。 – user687554

答えて

2

通常、この方法でVueオブジェクトにメソッドをアタッチしません。ほとんどの場合、prototypeに追加します。

Vue.prototype.myMethod = function() {}; 

次に、あなたは

vm.myMethod() 

console.clear() 
 

 
const MyPlugin = { 
 
    install: function(Vue, options) { 
 
    console.log('installing my plugin'); 
 

 
    Vue.prototype.myMethod = function() { 
 
     console.log("method called") 
 
    }; 
 
    } 
 
} 
 
Vue.use(MyPlugin); 
 

 
const template = `<div id="app"></div>`; 
 
vm = new Vue({ 
 
    template 
 
}).$mount(); 
 

 
vm.myMethod();
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>

+0

私がこのアプローチを使用しても、まだ動作しません。私が気づいていないJestのテストランナーと一緒にやらなければならないことがありますか? – user687554

+0

@ user687554わかりません。あなたはレポを持っていますか? – Bert

+0

ああ...それを考え出した。 myPlugin.jsに 'module.exports = MyPlugin;'がありませんでした。 – user687554

関連する問題