Імітації класів ES6
Jest може застосовуватись для імітації класів ES6, які імпортуються у файли, що підлягають тестуванню.
ES6 класи - це функції-конструктори з деяким синтаксичним цукром. Тому, будь-яка імітація класу ES6 повинна бути функцією або класом ES6 (який, знову ж таки, є функцією). Ви можете імітувати їх за допомогою функцій-імітацій.
Приклад ES6 класу
Ми використаємо спеціальний приклад класу, який відтворює звукові файли, SoundPlayer
і клас SoundPlayerConsumer
, який його використовує. Ми імітуватимемо SoundPlayer
в наших тестах для SoundPlayerConsumer
.
sound-player.js
export default class SoundPlayer {
constructor() {
this.foo = 'bar';
}
playSoundFile(fileName) {
console.log('Playing sound file ' + fileName);
}
}
sound-player-consumer.js
import SoundPlayer from './sound-player';
export default class SoundPlayerConsumer {
constructor() {
this.soundPlayer = new SoundPlayer();
}
playSomethingCool() {
const coolSoundFileName = 'song.mp3';
this.soundPlayer.playSoundFile(coolSoundFileName);
}
}