C u c u m b e r
:: #typescript ::
TypeScript를 적용해서 타입 체킹을 용이하게 하자는 내부의 의견을 수렴해 cucumber에 TypeScript를 적용하게 되었습니다.
Repo: https://github.com/ClareKang/agile-testing
소스는 레포에서 참고 부탁드려요.
지난 소스는 cucumber v3을 사용했는데 이번에 typescript를 적용하면서 버전을 v4로 업데이트 진행했습니다.
// package.json
"dependencies": {
"chai": "^4.1.2",
"cucumber": "^4.2.1",
"papaparse": "^4.5.0",
"superagent": "^3.8.3",
"ts-node": "^6.1.0",
"typescript": "^2.9.1"
"@types/chai": "^4.1.3",
"@types/cucumber": "^4.0.4",
"@types/node": "^10.3.1",
"@types/papaparse": "^4.1.34",
"@types/superagent": "^3.8.0",
"eslint": "^4.19.1",
"tslint": "^5.10.0",
"tslint-no-unused-expression-chai": "^0.1.3"
}
현재 사용 중인 package들 입니다.
v4에 맞춰 스크립트도 변경했습니다
"test": "./node_modules/.bin/cucumber-js -r tasks/vroong/steps/*.steps.ts --require-module ts-node/register"
.features
파일은 그대로 사용할 거라 수정할 필요가 없습니다.
// login.steps.ts
import { expect } from "chai";
import { Given, Then } from "cucumber";
import Api from "../common";
Given(/^(.+) \/ (.+) 계정으로 로그인하면$/, function(
username: string,
password: string,
callback: any,
) {
const api = new Api();
api
.login({ username, password })
.then((res: any) => {
this.token = res.access_token;
callback();
})
.catch(() => {
this.token = null;
callback();
});
});
Then("로그인이 성공한다", function(callback: any) {
expect(this.token).to.be.not.null;
callback();
});
Then("로그인이 실패한다", function(callback: any) {
expect(this.token).to.be.null;
callback();
});
현재 타입을 다 any로 넣어두긴 했지만 사실 나중에 명세를 정확하게 써야합니다.
이번에 world의 this.token
을 domain 레벨로 넘기려고 했지만 여러모로 실패해서 그 작업은 다음에 올리도록 하겠습니다.
kr-dev Cucumber and Javascript #introduce — Steemit
kr-dev Cucumber and Javascript #로그인 시나리오 작성 — Steemit