2.6.8
https://jsfiddle.net/chrisvfritz/50wL7mdz/
рдпрд╣ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ vue / dist / vue.js рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдирдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ ASAP рдореЗрдВ рдФрд░ рдХрджрдо рдмрдврд╝рд╛рдПрдБрдЧреЗред
1) рдЗрд╕ рд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ - https://github.com/vuejs/vue-test-utils-mocha-webpack-example
2) рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд░реЗрдВ
3) рдПрди.рдкреА.рдПрдо.
4) npm рдкрд░реАрдХреНрд╖рдг - рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ
4) рдПрдирдкреАрдПрдо рдЕрдкрдбреЗрдЯ рд╡реАрдпреВ
5) npm рдкрд░реАрдХреНрд╖рдг - рд╕рдВрджрд░реНрдн: рдкреНрд░рджрд░реНрд╢рди: рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЕрднрд┐рд╡рд╛рджрди,
рдкреНрд▓реЗрдореЗрди
рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗрдЦреА рдЧрдИ
рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦреА рдЧрдИ рд╣реИ
рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рдХреГрдкрдпрд╛ рдПрдХ рд░рд┐рдкреНрд░реЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
рд╣рд╛рдп @ рдПрдХреНрд╕рдкреЛрдЬ ,
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдореИрдВрдиреЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрджрдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдореЛрдВ рдХреЗ рддрд╣рдд рдЧрд┐рдЯрдм рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред
рдЕрднрд┐рд╡рд╛рджрди,
рдкреНрд▓реЗрдореЗрди
рдЖрдк рдЬрд┐рд╕ рдЪреАрдЬрд╝ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдкрджрд╛рд╡рдирдд рдЙрджрд╛рд╣рд░рдг рд╣реИред рдПрдХ рд░рд┐рдкреНрд░реЛ рдХреЛ jsfiddle рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ HTML рдлрд╝рд╛рдЗрд▓ (рдпрд╛ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА) рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдореЗрдВ рдореЛрдЪрд╛ рдпрд╛ рд╡реНрдпреВ-рдЯреЗрд╕реНрдЯ-рдмрд░реНрддрдиреЛрдВ рдЬреИрд╕реА рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдпрд╣ рдЙрд╕ рдкреИрдХреЗрдЬ рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред рдЪреАрдпрд░реНрд╕ред
рд╡рд╛рдкрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдПрдЪрдПрдо - рдореИрдВ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ - 'рдкреНрд░рджрд░реНрд╢рди' рдЬреЛ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рд╣реИ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╣реАрдВ рднреА рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ window.performance рдФрд░ config.performance рд╣реИ рдлрд┐рд░ рднреА рдореБрдЭреЗ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ 'рдкреНрд░рджрд░реНрд╢рди' рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдлрд╝рд╛рдЗрд▓ рдкрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЕрднрд┐рд╡рд╛рджрди,
рдкреНрд▓реЗрдореЗрди
рдпрд╣ рднреА рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред Vue рдХреЛ 2.6.9 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ CI рд╕реЗ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реА (рдореИрдВ рдбрд┐рдкреНрд╕ рдХреЛ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╡реАрдиреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ:
> window.performance
Performance {}
> performance
ReferenceError: performance is not defined
рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП window.performace
рдмрдЬрд╛рдп рдмреБрд▓рд╛рдиреЗ рдХреА performance
рд╕реАрдзреЗ jsdom рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд▓реЗрдмрд▓ рд╕реБрдзрд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдиреВ рдЦреЛрд▓рд╛ рдерд╛ рдФрд░ рдкреАрдЖрд░ рд▓реЗрдмрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╛рд╣рд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдордЬреЗрджрд╛рд░ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рдорд╛рдорд▓рд╛
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ JSDOM рдПрдХ рд╣реИ рдХрд┐ performance
рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд░реНрдерди process.hrtime
, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рд╣реИрдХ рдЧрд╛рд░рдВрдЯреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ performance
рд╣рдореЗрд╢рд╛ рдХрд╛рдо JSDOM рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ ( рдпрд╣ рд╕рднреА рдХреЗ рдмрд╛рдж рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рд╣реИ)ред
@ рдПрдХреНрд╕рдкреЛрдЬрд╡рд╛ ЁЯШВ
рдЬрдм рддрдХ рдЗрд╕реЗ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ JSDOM рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ:
// eslint-disable-next-line no-undef
global.performance = window.performance;
рдЬрдм рддрдХ рдЗрд╕реЗ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ JSDOM рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ:
// eslint-disable-next-line no-undef global.performance = window.performance;
рдмреЗрд╡рдХреВрдл рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдХреЛ рдХрд╣рд╛рдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ JSDOM рдкрдВрдЬреАрдХрд░рдг Vue CLI 3 рдФрд░ cli-plugin-unit-mocha (рдХреЛрдИ setup.js) рдореЗрдВ рджреВрд░ рд╣реИ?
рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж...
// eslint-disable-next-line no-undef
global.performance = window.performance;
рд╡рд╣реА рдкреНрд░рд╢реНрдиред рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХрд╣рд╛рдБ рдЬреЛрдбрд╝реВрдБ?
@Theonlychase рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдореБрдЦреНрдп рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ test/setup.js
рдпрд╣ рд╡рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХрд╛ require('jsdom-global')
--require
рдзреНрд╡рдЬ рдкрд░ рдиреАрдЪреЗ рд╕рдВрджрд░реНрднрд┐рддред
"test": "mocha-webpack --webpack-config webpack/webpack.config.test.js --require test/setup.js reporter mocha-bamboo-reporter"
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ:
рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
window.performace
рдмрдЬрд╛рдп рдмреБрд▓рд╛рдиреЗ рдХреАperformance
рд╕реАрдзреЗ jsdom рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред