Nodejs: правила модульного тестирования graphql-shield

Что вы думаете о модульном тестировании правил graphql-shield? Вот пример правила:

      export const authenticatedRule = () =>
   rule()((_parent, _args, {auth}) => {
       if (!auth.isAuthenticated) {
           return new ForbiddenError('Authentication required');
       }
       return true;
   });

Что я сейчас тестирую вот так в javascript:

         test('should return true if the token is valid and no options provided', async () => {
               verifyToken.mockReturnValueOnce(Promise.resolve({sub: jwtSubject, jti: 'jti'}));
               expect(await rules.verifyTokenRule('token', {}, {}).func(null, variables)).toEqual(true);
           });

Проблема с этим подходом в том, что .func является частной собственностью. Итак, для тестов с использованием машинописного текста:

  1. Используйте // ts-ignore
  2. экспортировать логику из правил в такие функции, как, например, AuthenticatedRuleLogic, но в итоге мы экспортируем функции только для тестов, не говоря уже о дублированных функциях

может есть еще один вариант, упущенный из виду?

0 ответов

Другие вопросы по тегам