[英]How do I use Jasmine to spy on a function that is imported via an ES6 default export?
[英]Jasmine: How to spy imported function/constructor on ES6?
我想知道如果我使用ES6導入/導出與babel,我怎么能在Jasmine上監視/存根函數?
import MobileDetect from 'mobile-detect';
it('should spy MobileDetect', () => {
MobileDetect = jasmine.createSpy('MobileDetect');
});`
第一個問題是我無法重寫只讀模塊
模塊構建失敗: SyntaxError: /Users/oleg/projects/rp/popup/lib/spec/popup.spec.js: "MobileDetect" is read-only
it('should spy MobileDetect', () => {
console.log(MobileDetect.prototype.constructor === MobileDetect); //true
spyOn( MobileDetect.prototype, 'constructor' );
console.log(MobileDetect.prototype.constructor === MobileDetect); //false
});`
我嘗試過這種方法,但它也不起作用...... MobileDetect.prototype.constructor發誓,但MobileDetect不直接。
你怎么看待這個問題?
與您的測試中的mocking require()
語句的proxyquire類似,您可以使用babel-plugin-rewire對ES6導入執行相同的操作。
您的測試設置可能看起來像這樣;
import myModuleUnderTest from '../src/popup';
beforeEach(() => {
this.fakeMobileDetect = jasmine.createSpy();
myModuleUnderTest.__Rewire__('MobileDetect', this.fakeMobileDetect);
});
你可以恢復正常;
afterEach(() => {
myModuleUnderTest.__ResetDependency__('MobileDetect');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.