title: Angular Material Unit Testing: Mocking a MatSelectChange event
body: <p><strong>Description</strong>: I am writing unit tests for the following function:</p>
  <pre><code>updateUserStatus(event: MatSelectChange | any, reportID: number) {
      const matOption = (event.source.selected as MatOption);
      const option = matOption.value;
      this.setUserActions(reportID, option.id);
  }
  </code></pre>
  <p><strong>Test Spec</strong></p>
  <pre><code>it('should test updateUserStatus', () =&gt; {
      spyOn(component, 'updateUserStatus').and.callThrough();
      spyOn(component, 'setUserActions').and.callFake(() =&gt; {});
      component.updateUserStatus({{MOCK_EVENT_HERE}}, 123456);
      expect(component.updateUserStatus).toHaveBeenCalledTimes(1);
      expect(component.setUserActions).toHaveBeenCalledTimes(1);
  });
  </code></pre>
  <p><strong>Problem</strong>: I am finding it hard to mock the 'event' argument which is an instance of 'MatSelectChange'.</p>
  <h2><strong>What have I tried so far?</strong></h2>
  <p><strong>1. Copying 'event' value from browser console</strong></p>
  <p>This gives me a:</p>
  <blockquote>
  <p>Uncaught TypeError: Converting circular structure to JSON.</p>
  </blockquote>
  <p><strong>2. Create a new MatSelectChange instance</strong></p>
  <p>The 'MatSelect' constructor requires 12-13 arguments oh my!. Don't know how to instantiate:</p>
  <pre><code>const selectChange = new MatSelectChange(new MatSelect(), 'Value');
  </code></pre>
  <p><em>If any other detail is missing, please let me know if that will help in understanding it better.</em></p>