Стаб Пушер (Ивент) Javascript - PullRequest
0 голосов
/ 27 марта 2019

Я использую pusher для своих сокетов / событий.

Мои каналы-толкатели обернуты в объект, который передается через канал ключ / значение в дочерний компонент. Таким образом, фактический канал находится в this.channel.value, а this.channel.key - это просто строка с ключом.

Код

@Input() channel;
...
ngOnInit() {
  console.log('channel.value', this.channel.value, typeof this.channel.value);
  this.channel.value.bind('client-msg', (msg) => {
  ...
  });

console.log дает мне объект e, я предполагаю, что это событие, типа Object?

channel.value e {callbacks: t, global_callbacks: Array(0), failThrough: ƒ, name: "private-5c49fdc35abdba3fccb362795c49fe6d5cc2ea3ffcb4f895", pusher: t, …}callbacks: t {_callbacks: {…}}failThrough: ƒ (t,n)global_callbacks: []name: "private-5c49fdc35abdba3fccb362795c49fe6d5cc2ea3ffcb4f895"pusher: t {key: "0d4bf48a9d086414a4da", config: {…}, channels: t, global_emitter: t, sessionID: 123906324, …}receiver: "5c49fdc35abdba3fccb36279"receiverName: "Don Peyote"subscribed: truesubscriptionCancelled: falsesubscriptionPending: falsetype: "chat"__proto__: e object

Угловой / Жасминовый тест:

  beforeEach(() => {
    fixture = TestBed.createComponent(ChatMessengerComponent);
    component = fixture.componentInstance;
    component.channel = {
      key: 'private-5c49fdc35abdba3fcl1fecb362795c49fe6d5cc2ea3ffcb4f895',
      value:
        {
          receiver: '5c49fdc35abdba3fccb36279',
          name: 'DonPeyote'
        }
    };
    fixture.detectChanges();
  });

Вопрос:

Как мне создать заглушку / макет, чтобы я мог передать свои свойства (получатель, имя) и привязать к нему прослушиватель событий?

1 Ответ

0 голосов
/ 02 апреля 2019

Я нашел модуль pusher-js-mock .

import { PusherMock } from "pusher-js-mock";

...

describe('ChatMessengerComponent', () => {
  let component: ChatMessengerComponent;
  let fixture: ComponentFixture<ChatMessengerComponent>;
  const pusher = new PusherMock();

...

  beforeEach(() => {
    fixture = TestBed.createComponent(ChatMessengerComponent);
    component = fixture.componentInstance;
    const channel = pusher.subscribe('private-5c49fdc35abdba3fcl1fecb362795c49fe6d5cc2ea3ffcb4f895');
    component.channel = {
      key: 'private-5c49fdc35abdba3fcl1fecb362795c49fe6d5cc2ea3ffcb4f895',
      value: channel
    };
...