0

您如何看待 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-忽略
  2. 从函数中的规则导出逻辑,例如authenticatedRuleLogic,但是我们最终导出函数只是为了测试,更不用说重复的函数了

也许还有另一种选择被忽略?

4

0 回答 0