본문 바로가기
WIKI 기술 지식 베이스

드라이 런 테스트

원문 보기 위키 갱신

드라이 런 테스트 (Dry Run Testing)

스캐폴더 템플릿은 스캐폴더 액션의 드라이 런 기능을 사용해 테스트할 수 있습니다. 이것은 예를 들어 GitHub에서 웹훅을 만드는 것처럼, 환경에 실제 변경을 가하지 않고도 스캐폴더 액션 실행의 효과를 시뮬레이션할 수 있게 해 줍니다. 스캐폴더 액션에서 드라이 런이 활성화되면, 스캐폴더 템플릿에서 사용하는 액션에 처리를 추가해 드라이 런 시나리오에서 액션이 어떻게 작동해야 하는지 정의할 수 있습니다.

출처: 문서

본문

스캐폴더 템플릿은 스캐폴더 액션의 드라이 런 기능을 사용해 테스트할 수 있습니다. 이것은 예를 들어 GitHub에서 웹훅을 만드는 것처럼, 환경에 실제 변경을 가하지 않고도 스캐폴더 액션 실행의 효과를 시뮬레이션할 수 있게 해 줍니다. 스캐폴더 액션에서 드라이 런이 활성화되면, 스캐폴더 템플릿에서 사용하는 액션에 처리를 추가해 드라이 런 시나리오에서 액션이 어떻게 작동해야 하는지 정의할 수 있습니다.

드라이 런 테스트 활성화

스캐폴더 액션에 대해 드라이 런을 활성화하려면, 액션의 동작이 정의된 함수에서 createTemplateAction의 구성 객체에 supportsDryRun: true를 추가해야 합니다.

export function exampleAction() {  return createTemplateAction<{    example: string;  }>({    id: 'action:example',    description: 'Example action',    schema: {      input: {        type: 'object',        properties: {          example: {            title: 'example',            type: 'string',          },        },      },    },    supportsDryRun: true,    async handler(ctx) {      ...    },  });}

드라이 런 처리 추가

드라이 런 기능에 대한 처리를 추가하려면, 액션의 동작이 정의된 함수에서 createTemplateAction으로 전달되는 구성 객체의 핸들러 안에 ctx.isDryRun에 대한 검사를 추가해야 합니다. 검사가 성공하면, 드라이 런에서 기대하는 원하는 동작(예: 민감하지 않은 입력 출력)을 수행할 수 있습니다.

async handler(ctx) {      ...      // If this is a dry run, log and return      if (ctx.isDryRun) {        ctx.logger.info(`Dry run complete`);        return;      }      ...    },

드라이 런 처리 테스트

드라이 런 처리에 대한 테스트도 추가해야 합니다. 예를 들어:

it('should not perform action during dry run', async () => {    ...    // Create the context object with the necessary properties for a dry run    const ctx = {      ...mockContext,      isDryRun: true,      input: {        ...      },    };    // Call the handler with the context    await action.handler(ctx);    expect(...);  });

더 알아보기 (Learn more)