mirror of
https://github.com/kou029w/jest-hands-on.git
synced 2025-01-31 22:08:00 +00:00
test externalization
This commit is contained in:
parent
432dd62cff
commit
310bb48c93
7 changed files with 70 additions and 65 deletions
|
@ -46,17 +46,7 @@
|
||||||
「何を作るか」ということを忘れないようにコメントに転載します。
|
「何を作るか」ということを忘れないようにコメントに転載します。
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// isLeapYear.test.js
|
{{#include practices/step0.test.js}}
|
||||||
/** TODO:
|
|
||||||
西暦年号が4で割り切れる年はうるう年
|
|
||||||
たとえば、西暦2024年、2028年、2032年は4で割り切れるので、うるう年です。
|
|
||||||
西暦年号が4で割り切れない年はうるう年でない
|
|
||||||
たとえば、西暦2021年、2022年、2023年は4で割り切れないので、うるう年ではありません。
|
|
||||||
ただし、西暦年号が100で割り切れる年はうるう年でない
|
|
||||||
たとえば、西暦2100年、2200年、2300年は100で割り切れるので、うるう年ではありません。
|
|
||||||
ただし、西暦年号が400で割り切れる年はうるう年
|
|
||||||
たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。
|
|
||||||
*/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
うるう年であることを判定するので `isLeapYear` という名前に決めました。
|
うるう年であることを判定するので `isLeapYear` という名前に決めました。
|
||||||
|
@ -105,12 +95,7 @@ npx jest --watchAll
|
||||||
最初からすべての実装を書こうとせず、小さい変更のみで済ませるのがポイントです。
|
最初からすべての実装を書こうとせず、小さい変更のみで済ませるのがポイントです。
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// isLeapYear.js
|
{{#include practices/isLeapYear.js}}
|
||||||
function isLeapYear(year) {
|
|
||||||
return year % 4 === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default isLeapYear;
|
|
||||||
```
|
```
|
||||||
|
|
||||||
ファイルを作成したら、テスト側でも `import` 文によって実装した関数を読み込みます。
|
ファイルを作成したら、テスト側でも `import` 文によって実装した関数を読み込みます。
|
||||||
|
@ -139,23 +124,7 @@ test("西暦年号が4で割り切れる年はうるう年", () => {
|
||||||
「西暦年号が4で割り切れる年はうるう年」という目標を達成したと判断したら、コメントからは消しておきます。
|
「西暦年号が4で割り切れる年はうるう年」という目標を達成したと判断したら、コメントからは消しておきます。
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// isLeapYear.test.js
|
{{#include practices/step1.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で割り切れるので、うるう年です。
|
|
||||||
*/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
次の目標「西暦年号が4で割り切れない年はうるう年でない」に進めていきます。
|
次の目標「西暦年号が4で割り切れない年はうるう年でない」に進めていきます。
|
||||||
|
@ -167,27 +136,7 @@ test("西暦年号が4で割り切れる年はうるう年", () => {
|
||||||
これらのテストも問題なく合格するようになれば、「西暦年号が4で割り切れない年はうるう年でない」という目標も達成したと判断して、コメントから消しておきます。
|
これらのテストも問題なく合格するようになれば、「西暦年号が4で割り切れない年はうるう年でない」という目標も達成したと判断して、コメントから消しておきます。
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// isLeapYear.test.js
|
{{#include practices/step2.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で割り切れるので、うるう年です。
|
|
||||||
*/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 続きの課題
|
## 続きの課題
|
||||||
|
|
6
src/practices/isLeapYear.js
Normal file
6
src/practices/isLeapYear.js
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
// isLeapYear.js
|
||||||
|
function isLeapYear(year) {
|
||||||
|
return year % 4 === 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default isLeapYear;
|
11
src/practices/step0.test.js
Normal file
11
src/practices/step0.test.js
Normal file
|
@ -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で割り切れるので、うるう年です。
|
||||||
|
*/
|
17
src/practices/step1.test.js
Normal file
17
src/practices/step1.test.js
Normal 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年、2022年、2023年は4で割り切れないので、うるう年ではありません。
|
||||||
|
ただし、西暦年号が100で割り切れる年はうるう年でない
|
||||||
|
たとえば、西暦2100年、2200年、2300年は100で割り切れるので、うるう年ではありません。
|
||||||
|
ただし、西暦年号が400で割り切れる年はうるう年
|
||||||
|
たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。
|
||||||
|
*/
|
21
src/practices/step2.test.js
Normal file
21
src/practices/step2.test.js
Normal 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年、2200年、2300年は100で割り切れるので、うるう年ではありません。
|
||||||
|
ただし、西暦年号が400で割り切れる年はうるう年
|
||||||
|
たとえば、西暦2000年、2400年、2800年は400で割り切れるので、うるう年です。
|
||||||
|
*/
|
|
@ -11,14 +11,5 @@
|
||||||
例:
|
例:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
test("正しくJSONをパースできる", () => {
|
{{#include test-writing-style/aaa-pattern.test.js}}
|
||||||
// 準備
|
|
||||||
const json = `{ "name": "太郎", "age": 20 }`;
|
|
||||||
|
|
||||||
// 実行
|
|
||||||
const parsed = JSON.parse(json);
|
|
||||||
|
|
||||||
// 検証
|
|
||||||
expect(parsed).toEqual({ name: "太郎", age: 20 });
|
|
||||||
});
|
|
||||||
```
|
```
|
||||||
|
|
10
src/test-writing-style/aaa-pattern.test.js
Normal file
10
src/test-writing-style/aaa-pattern.test.js
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
test("正しくJSONをパースできる", () => {
|
||||||
|
// 準備
|
||||||
|
const json = `{ "name": "太郎", "age": 20 }`;
|
||||||
|
|
||||||
|
// 実行
|
||||||
|
const parsed = JSON.parse(json);
|
||||||
|
|
||||||
|
// 検証
|
||||||
|
expect(parsed).toEqual({ name: "太郎", age: 20 });
|
||||||
|
});
|
Loading…
Add table
Reference in a new issue