0
假設以下兩個ES6類:模擬ES6依賴性當單元測試
我-random.js:
export default class MyRandom {
get() { return Math.random(); }
}
app.js:
import MyRandom from './random';
export default class App {
get() {
let r = new MyRandom();
let total = r.get() * r.get(); // Complex calc goes here!
return total;
}
}
現在我想單元從app.js
測試get
。所以我想模擬MyRandom
。藤本,我發現一個很有趣的庫Mocktail
根據該文檔,你應該改變我的-random.js到
import {mock} from 'mocktail';
class MyRandom {
get() { return Math.random(); }
}
export default mock(MyRandom);
在您的測試文件,你必須告訴你正在測試的環境如下:
import {env, ENV, inject} from 'mocktail';
env(ENV.TESTING);
class MyRandomMock {
get() {
return 10; // Not so random anymore
}
}
inject('MyRandom', MyRandomMock);
而且你應該可以測試app.js
。不幸的是,當我嘗試這種方式時,MyRandom永遠不會被模擬類取代。任何幫助,將不勝感激!!
我已經在github here上設置了一個測試項目來演示這個問題。正如你可以看到,如果有更好的方法來實現我需要什麼,請告訴我該測試將失敗:(
!