Giter Site home page Giter Site logo

Comments (6)

clarkbw avatar clarkbw commented on May 25, 2024

Can you link me to your repo?

from jest-webextension-mock.

clarkbw avatar clarkbw commented on May 25, 2024

I would assume it’s not setup correctly, can you check those steps in the readme?

from jest-webextension-mock.

davesag avatar davesag commented on May 25, 2024

Can you link me to your repo?

Sorry it's a closed-source project but I will see if I can get that changed. I'll recheck the readme.

from jest-webextension-mock.

davesag avatar davesag commented on May 25, 2024

I would assume it’s not setup correctly, can you check those steps in the readme?

I have rechecked the readme and there is nothing in it that I can see with specific set up steps for testing chrome.runtime.sendMessage. However I have now got this to work.

Here's the full source of my src/messaging/utils/send.js

/**
 *  A promisified version of the chrome sendMessage function.
 *
 *  @param the message to send.
 *  @returns a promise that resolves with the message response.
 */
const send = async msg =>
  new Promise(resolve =>
    chrome.runtime.sendMessage(msg, response => {
      if (chrome.runtime.lastError) {
        console.error(chrome.runtime.lastError.message);
      }
      resolve(response);
    })
  );

export default send;

and here's the now working test

import send from 'messaging/utils/send';

const message = 'some message';

const cleanup = () => {
  chrome.runtime.sendMessage.clearMocks();
  chrome.runtime.lastError = undefined;
};

describe('with no error', () => {
  beforeAll(async () => {
    chrome.runtime.sendMessage = jest.fn((msg, callback) => callback(msg));
    await send(message);
  })

  afterAll(cleanup);

  it('called chrome.runtime.sendMessage with the message', () => {
    expect(chrome.runtime.sendMessage).toHaveBeenCalledWith(
      message,
      expect.any(Function)
    );
  });
})

describe('with an error', () => {
  const error = new Error('oops');

  beforeAll(async () => {
    chrome.runtime.sendMessage = jest.fn((msg, callback) => callback(msg));
    chrome.runtime.lastError = error;
    await send(message);
  })

  afterAll(cleanup);

  it('called chrome.runtime.sendMessage with the message', () => {
    expect(chrome.runtime.sendMessage).toHaveBeenCalledWith(
      message,
      expect.any(Function)
    );
  });

  it('called logger.error', () => {
    expect(console.error).toHaveBeenCalledWith(error.message);
  })
})

from jest-webextension-mock.

clarkbw avatar clarkbw commented on May 25, 2024

I was wondering how you were using the setup, seen here: https://github.com/clarkbw/jest-webextension-mock#use-setup-file

from jest-webextension-mock.

davesag avatar davesag commented on May 25, 2024

I have a jest.init.js file

import 'core-js/stable';
import 'regenerator-runtime/runtime';
import 'jest-webextension-mock';

global.fetch = require('jest-fetch-mock');

global.console = {
  log: console.log,
  error: jest.fn(),
  warn: jest.fn(),
  info: jest.fn(),
  debug: jest.fn()
};

from jest-webextension-mock.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.