🦁
【TypeScript】GitHub Actions の input をテストする
GitHub Actions には core.getInput
などの関数があります。
TypeScript のテストをするには型定義が必要です。
インターフェイスを定義してあげれば、テスト可能になります。
定義
export interface ActionsCore {
getInput: (name: string) => string
info: (message: string) => void
warning: (message: string) => void
}
export class DummyCore {
input: {[key: string]: string}
log: [string, string][] = []
constructor(input: {[key: string]: string}) {
this.input = input
}
getInput(name: string): string {
return this.input[name] || ''
}
info(message: string) {
this.log.push(['info', message])
}
warning(message: string) {
this.log.push(['warning', message])
}
}
export async function loadConfigFromInput(core: ActionsCore): Promise<string> {
core.info('log')
return core.getInput('foo')
}
呼び出し側
import * as core from '@actions/core'
import {loadConfigFromInput} from './config'
async function main(): Promise<void> {
const config = await loadConfigFromInput(core)
}
テスト
import {loadConfigFromInput, DummyCore} from './config'
import {expect, test, describe} from '@jest/globals'
test('valid input', async () => {
const dummy = new DummyCore({
foo: 'bar'
})
expect(await loadConfigFromInput(dummy)).toBe('bar')
})
Discussion