How to fix this error –
AssertError: expected spy to have been called at least once but was never called
describe('subscribe()', () => {
let subscription: subscriptionType;
let eventCallbackSpy: SinonSpy = Sinon.spy();
let track : Track;
let videoTrack: MediaStreamTrack;
describe('track mute event & publisher', () => {
const mockDeviceAudio = {
ID: '47dd6c612bb77e7992cb8f026b660c59648e8105baf4c569f96d226738add9a4',
groupId: '99782d7b13f331947c1a9865b27cf7eabffbfd48cfe21ab99867d101c6d7b4d0',
kind: DeviceKinds.AUDIO_INPUT,
label: 'Fake Audio Input 1',
mediaDeviceInfo: null,
};
const mockDeviceVideo = {
ID: '47dd6c612bb77e7992cb8f026b660c59648e8105baf4c569f96d226738add9a4',
groupId: '99782d7b13f331947c1a9865b27cf7eabffbfd48cfe21ab99867d101c6d7b4d0',
kind: DeviceKinds.VIDEO_INPUT,
label: 'Fake Video Input 1',
mediaDeviceInfo: null,
};
before(async () => {
[videoTrack] = (await navigator.mediaDevices.getUserMedia({video: true})).getVideoTracks();
track = new Track(videoTrack as MediaStreamTrack);
setupMediaTrackMocks();
subscription = await track.subscribe('track:mute', eventCallbackSpy);
});
after(() => {
resetMediaTrackMocks();
});
it('should have subscribe, track mute event available', () => {
expect(subscription.listener.method).to.be.equal(eventCallbackSpy);
expect(subscriptions.events['track:mute'].get(subscription.listener.id)).to.be.equal(eventCallbackSpy);
});
it('should have track object from the library (instanceof Track)', async () => {
eventCallbackSpy = Sinon.spy();
subscriptions.events['track:mute'].set(subscription.listener.id, eventCallbackSpy);
Sinon.assert.called(eventCallbackSpy);
console.log("log ", eventCallbackSpy.getCall(0));
expect(eventCallbackSpy.getCall(0).args[0].action);
// making sure track object from the library(instanceof Track)
expect(eventCallbackSpy.getCall(0).args[0].track).to.be.an.instanceof(Track);
});
This test is given error –
track mute event & publisher
✖ should have track object from the library (instanceof Track)
Chrome Headless 93.0.4577.0 (Mac OS 10.15.7)
AssertError: expected spy to have been called at least once but was never called
This is my subscribe –
async subscribe(eventName: string, listener: () => void): Promise<subscription> {
const subscriptionListener = {
id: uuidv4(),
method: listener,
};
subscriptions.events[eventName].set(subscriptionListener.id, subscriptionListener.method);
const thisEventListeners = subscriptions.events[eventName];
switch (eventName) {
case 'track:mute': {
if (thisEventListeners.size === 1) {
this.#mediaStreamTrack.onmute = (event) => {
// using arrow function which should bind to this from outer scope track
trackMutePublisher(event, this);
}
}
break;
}
default:
break;
}
return new Promise((resolve) => {
resolve({
type: eventName,
listener: subscriptionListener,
});
});
}
In Test I am trying to check Sinon.assert.called(eventCallbackSpy);
but still it’s giving the error expected spy to have been called at least once but was never called
Please help me.