Вы должны шпионить за navigator.mediaDevices.getUserMedia
, вынуждая его вернуть обещание и разрешив его с требуемым значением.
Вы можете поместить что-то подобное в блоке beforeEach
или вначало теста:
const audioStream = { ... }; // create a mock audio stream with the appropriate methods spied on
let promise = Promise.resolve(audioStream);
spyOn(navigator.mediaDevices, 'getUserMedia', promise);
Я бы также порекомендовал вам преобразовать ваш тест в асинхронный, например так:
it('init()', async done => {
const record = new AudioRecorder();
const result = await record.init();
// test something with the result of init
done();
});
Я думаю, что намного легче следить за потоком управленияздесь.