Как бы вы проверили запросы к SQLite, используемые в React Native/Expo в шутку?

#react-native #sqlite #testing #jestjs #expo

Вопрос:

По большей части я использую насмешки, чтобы пропустить все функции моей базы данных. Однако я столкнулся с ошибкой, и я хочу предотвратить подобные проблемы, фактически протестировав SQL-запросы, которые я делаю к SQLite, вызванному Expo.

Поэтому я ищу что-то, что может издеваться expo-sqlite , но вместо использования expo-sqlite я думал, что должно быть что-то вроде реализации Node JS SQLite, которую может использовать Jest.

Я ищу что-то, где я мог бы сделать следующее

 import * as SQLite from 'expo-sqlite';

describe("do some SQLiteThing", () => {

  let db;

  beforeEach(()=> {
    db = someMethodThatReturnsARunningSQLiteInstanceThatsEmpty()
    createTablesAndSeedData(db);
  });
  it("should select nicely", async () => {
    const rs = await new Promise((resolve, reject)=> {
      db.exec(
        [
          { sql: 'SELECT * FROM MYTABLE;', args: [] }
        ], 
        false,
        resolve
      );
    });
    expect(rs).toEqual([{my:expecations}]);
  });
  
  it("should fail gracefully nicely", async () => {
    try {
      await new Promise((resolve, reject)=> {
        db.exec(
          [
            { sql: 'SELECT * FROM MYTABLETHATDOESNOTEXIST;', args: [] }
          ], 
          false,
          resolve,
          reject
        );
      });
      fail();
    } catch (err) {
      expect(err).toEqual(something);
    }
  });
});