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 является частной собственностью. Итак, для тестов с использованием машинописного текста:
- Используйте // ts-ignore
- экспортировать логику из правил в такие функции, как, например, AuthenticatedRuleLogic, но в итоге мы экспортируем функции только для тестов, не говоря уже о дублированных функциях
может есть еще один вариант, упущенный из виду?