From 310bb48c939e19f1998e0223bd4d17b395093f24 Mon Sep 17 00:00:00 2001 From: Kohei Watanabe Date: Wed, 2 Mar 2022 15:59:13 +0900 Subject: [PATCH] test externalization --- src/practices.md | 59 ++-------------------- src/practices/isLeapYear.js | 6 +++ src/practices/step0.test.js | 11 ++++ src/practices/step1.test.js | 17 +++++++ src/practices/step2.test.js | 21 ++++++++ src/test-writing-style.md | 11 +--- src/test-writing-style/aaa-pattern.test.js | 10 ++++ 7 files changed, 70 insertions(+), 65 deletions(-) create mode 100644 src/practices/isLeapYear.js create mode 100644 src/practices/step0.test.js create mode 100644 src/practices/step1.test.js create mode 100644 src/practices/step2.test.js create mode 100644 src/test-writing-style/aaa-pattern.test.js diff --git a/src/practices.md b/src/practices.md index 4b636a6..32c4929 100644 --- a/src/practices.md +++ b/src/practices.md @@ -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}} ``` ## 続きの課題 diff --git a/src/practices/isLeapYear.js b/src/practices/isLeapYear.js new file mode 100644 index 0000000..8a1e686 --- /dev/null +++ b/src/practices/isLeapYear.js @@ -0,0 +1,6 @@ +// isLeapYear.js +function isLeapYear(year) { + return year % 4 === 0; +} + +export default isLeapYear; diff --git a/src/practices/step0.test.js b/src/practices/step0.test.js new file mode 100644 index 0000000..7b83ee1 --- /dev/null +++ b/src/practices/step0.test.js @@ -0,0 +1,11 @@ +// isLeapYear.test.js +/** TODO: +西暦年号が4で割り切れる年はうるう年 + たとえば、西暦2024年、2028年、2032年は4で割り切れるので、うるう年です。 +西暦年号が4で割り切れない年はうるう年でない + たとえば、西暦2021年、2022年、2023年は4で割り切れないので、うるう年ではありません。 +ただし、西暦年号が100で割り切れる年はうるう年でない + たとえば、西暦2100年、2200年、2300年は100で割り切れるので、うるう年ではありません。 +ただし、西暦年号が400で割り切れる年はうるう年 + たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。 +*/ diff --git a/src/practices/step1.test.js b/src/practices/step1.test.js new file mode 100644 index 0000000..0793469 --- /dev/null +++ b/src/practices/step1.test.js @@ -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年、2022年、2023年は4で割り切れないので、うるう年ではありません。 +ただし、西暦年号が100で割り切れる年はうるう年でない + たとえば、西暦2100年、2200年、2300年は100で割り切れるので、うるう年ではありません。 +ただし、西暦年号が400で割り切れる年はうるう年 + たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。 +*/ diff --git a/src/practices/step2.test.js b/src/practices/step2.test.js new file mode 100644 index 0000000..16e51f5 --- /dev/null +++ b/src/practices/step2.test.js @@ -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年、2200年、2300年は100で割り切れるので、うるう年ではありません。 +ただし、西暦年号が400で割り切れる年はうるう年 + たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。 +*/ diff --git a/src/test-writing-style.md b/src/test-writing-style.md index d194a93..f84b188 100644 --- a/src/test-writing-style.md +++ b/src/test-writing-style.md @@ -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}} ``` diff --git a/src/test-writing-style/aaa-pattern.test.js b/src/test-writing-style/aaa-pattern.test.js new file mode 100644 index 0000000..381c7ec --- /dev/null +++ b/src/test-writing-style/aaa-pattern.test.js @@ -0,0 +1,10 @@ +test("正しくJSONをパースできる", () => { + // 準備 + const json = `{ "name": "太郎", "age": 20 }`; + + // 実行 + const parsed = JSON.parse(json); + + // 検証 + expect(parsed).toEqual({ name: "太郎", age: 20 }); +});