Testowanie jednostkowe rozszerzeń do Chrome

Testowanie jednostkowe umożliwia testowanie niewielkich fragmentów kodu niezależnie od pozostałych rozszerzeń i poza przeglądarką. Możesz na przykład napisać test jednostkowy, aby sprawdzić, czy metoda pomocnicza poprawnie zapisuje wartość w pamięci.

Kod napisany bez użycia interfejsów API rozszerzeń można testować w zwykły sposób przy użyciu platformy, takiej jak Jest. Aby ułatwić testowanie kodu w ten sposób, rozważ zastosowanie takich technik jak wstrzykiwanie zależności, które pomogą usunąć zależności od przestrzeni nazw Chrome w implementacji niższego poziomu.

Jeśli musisz przetestować kod zawierający interfejsy API rozszerzeń, rozważ użycie wersji próbnych.

Przykład: wykorzystanie żartów z Jestem

Utwórz plik jest.config.js z zadeklarowaniem pliku konfiguracji, który zostanie uruchomiony przed wszystkimi testami:

jest.config.js:

module.exports = {
  setupFiles: ['<rootDir>/mock-extension-apis.js']
};

W usłudze mock-extension-apis.js dodaj implementacje konkretnych funkcji, które chcesz wywoływać:

mock-extension-apis.js:

global.chrome = {
  tabs: {
    query: async () => { throw new Error("Unimplemented.") };
  }
};

Następnie użyj funkcji jest.spy, aby pozorować wartość zwracaną w teście:

test("getActiveTabId returns active tab ID", async () => {
  jest.spyOn(chrome.tabs, "query").mockResolvedValue([{
    id: 3,
    active: true,
    currentWindow: true
  }]);
  expect(await getActiveTabId()).toBe(3);
});

Dalsze kroki

Aby mieć pewność, że rozszerzenie będzie działać zgodnie z oczekiwaniami, zalecamy przeprowadzanie pełnych testów. Pełny samouczek znajdziesz w artykule Testowanie rozszerzeń do Chrome przy użyciu Puppeteer.