test externalization

This commit is contained in:
Nebel 2022-03-02 15:59:13 +09:00
parent 432dd62cff
commit 310bb48c93
7 changed files with 70 additions and 65 deletions

View file

@ -46,17 +46,7 @@
「何を作るか」ということを忘れないようにコメントに転載します。
```js
// isLeapYear.test.js
/** TODO:
西暦年号が4で割り切れる年はうるう年
たとえば、西暦2024年、2028年、2032年は4で割り切れるので、うるう年です。
西暦年号が4で割り切れない年はうるう年でない
たとえば、西暦2021年、2022年、2023年は4で割り切れないので、うるう年ではありません。
ただし、西暦年号が100で割り切れる年はうるう年でない
たとえば、西暦2100年、2200年、2300年は100で割り切れるので、うるう年ではありません。
ただし、西暦年号が400で割り切れる年はうるう年
たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。
*/
{{#include practices/step0.test.js}}
```
うるう年であることを判定するので `isLeapYear` という名前に決めました。
@ -105,12 +95,7 @@ npx jest --watchAll
最初からすべての実装を書こうとせず、小さい変更のみで済ませるのがポイントです。
```js
// isLeapYear.js
function isLeapYear(year) {
return year % 4 === 0;
}
export default isLeapYear;
{{#include practices/isLeapYear.js}}
```
ファイルを作成したら、テスト側でも `import` 文によって実装した関数を読み込みます。
@ -139,23 +124,7 @@ test("西暦年号が4で割り切れる年はうるう年", () => {
「西暦年号が4で割り切れる年はうるう年」という目標を達成したと判断したら、コメントからは消しておきます。
```js
// isLeapYear.test.js
import isLeapYear from "./isLeapYear";
test("西暦年号が4で割り切れる年はうるう年", () => {
expect(isLeapYear(2024)).toBe(true);
expect(isLeapYear(2028)).toBe(true);
expect(isLeapYear(2032)).toBe(true);
});
/** TODO:
西暦年号が4で割り切れない年はうるう年でない
たとえば、西暦2021年、2022年、2023年は4で割り切れないので、うるう年ではありません。
ただし、西暦年号が100で割り切れる年はうるう年でない
たとえば、西暦2100年、2200年、2300年は100で割り切れるので、うるう年ではありません。
ただし、西暦年号が400で割り切れる年はうるう年
たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。
*/
{{#include practices/step1.test.js}}
```
次の目標「西暦年号が4で割り切れない年はうるう年でない」に進めていきます。
@ -167,27 +136,7 @@ test("西暦年号が4で割り切れる年はうるう年", () => {
これらのテストも問題なく合格するようになれば、「西暦年号が4で割り切れない年はうるう年でない」という目標も達成したと判断して、コメントから消しておきます。
```js
// isLeapYear.test.js
import isLeapYear from "./isLeapYear";
test("西暦年号が4で割り切れる年はうるう年", () => {
expect(isLeapYear(2024)).toBe(true);
expect(isLeapYear(2028)).toBe(true);
expect(isLeapYear(2032)).toBe(true);
});
test("西暦年号が4で割り切れない年はうるう年でない", () => {
expect(isLeapYear(2021)).toBe(false);
expect(isLeapYear(2022)).toBe(false);
expect(isLeapYear(2023)).toBe(false);
});
/** TODO:
ただし、西暦年号が100で割り切れる年はうるう年でない
たとえば、西暦2100年、2200年、2300年は100で割り切れるので、うるう年ではありません。
ただし、西暦年号が400で割り切れる年はうるう年
たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。
*/
{{#include practices/step2.test.js}}
```
## 続きの課題

View file

@ -0,0 +1,6 @@
// isLeapYear.js
function isLeapYear(year) {
return year % 4 === 0;
}
export default isLeapYear;

View file

@ -0,0 +1,11 @@
// isLeapYear.test.js
/** TODO:
西暦年号が4で割り切れる年はうるう年
たとえば西暦2024年20282032年は4で割り切れるのでうるう年です
西暦年号が4で割り切れない年はうるう年でない
たとえば西暦2021年20222023年は4で割り切れないのでうるう年ではありません
ただし西暦年号が100で割り切れる年はうるう年でない
たとえば西暦2100年22002300年は100で割り切れるのでうるう年ではありません
ただし西暦年号が400で割り切れる年はうるう年
たとえば西暦2000年24002800年は400で割り切れるのでうるう年です
*/

View file

@ -0,0 +1,17 @@
// isLeapYear.test.js
import isLeapYear from "./isLeapYear";
test("西暦年号が4で割り切れる年はうるう年", () => {
expect(isLeapYear(2024)).toBe(true);
expect(isLeapYear(2028)).toBe(true);
expect(isLeapYear(2032)).toBe(true);
});
/** TODO:
西暦年号が4で割り切れない年はうるう年でない
たとえば西暦2021年20222023年は4で割り切れないのでうるう年ではありません
ただし西暦年号が100で割り切れる年はうるう年でない
たとえば西暦2100年22002300年は100で割り切れるのでうるう年ではありません
ただし西暦年号が400で割り切れる年はうるう年
たとえば西暦2000年24002800年は400で割り切れるのでうるう年です
*/

View file

@ -0,0 +1,21 @@
// isLeapYear.test.js
import isLeapYear from "./isLeapYear";
test("西暦年号が4で割り切れる年はうるう年", () => {
expect(isLeapYear(2024)).toBe(true);
expect(isLeapYear(2028)).toBe(true);
expect(isLeapYear(2032)).toBe(true);
});
test("西暦年号が4で割り切れない年はうるう年でない", () => {
expect(isLeapYear(2021)).toBe(false);
expect(isLeapYear(2022)).toBe(false);
expect(isLeapYear(2023)).toBe(false);
});
/** TODO:
ただし西暦年号が100で割り切れる年はうるう年でない
たとえば西暦2100年22002300年は100で割り切れるのでうるう年ではありません
ただし西暦年号が400で割り切れる年はうるう年
たとえば西暦2000年24002800年は400で割り切れるのでうるう年です
*/

View file

@ -11,14 +11,5 @@
例:
```js
test("正しくJSONをパースできる", () => {
// 準備
const json = `{ "name": "太郎", "age": 20 }`;
// 実行
const parsed = JSON.parse(json);
// 検証
expect(parsed).toEqual({ name: "太郎", age: 20 });
});
{{#include test-writing-style/aaa-pattern.test.js}}
```

View file

@ -0,0 +1,10 @@
test("正しくJSONをパースできる", () => {
// 準備
const json = `{ "name": "太郎", "age": 20 }`;
// 実行
const parsed = JSON.parse(json);
// 検証
expect(parsed).toEqual({ name: "太郎", age: 20 });
});