드라이 런 테스트
드라이 런 테스트 (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(...); });