回答編集履歴
4
余談
answer
CHANGED
@@ -65,4 +65,16 @@
|
|
65
65
|
}
|
66
66
|
```
|
67
67
|
みたいにいくらでも抜け道ができて困る
|
68
|
-
ということですよね?
|
68
|
+
ということですよね?
|
69
|
+
|
70
|
+
---
|
71
|
+
|
72
|
+
余談
|
73
|
+
|
74
|
+
str -> str + "hoge"自体のテストを抜け道潰して行おうとすると
|
75
|
+
exceptで同じ関数を実装することになって意味がなくなります。
|
76
|
+
こういう場合はProperty based testというものを行います。
|
77
|
+
|
78
|
+
f(x).substring(0,x.length()).equals(x);
|
79
|
+
|
80
|
+
みたいな関数それ自体の性質を何個か作り、それをテストします。
|
3
修正
answer
CHANGED
@@ -7,12 +7,13 @@
|
|
7
7
|
|
8
8
|
---
|
9
9
|
|
10
|
-
いや、特定の引数に対して変な値を返すように"悪意をもって"実装すればテスト通りますが、
|
10
|
+
いや、特定の引数に対して変な値を返すように"悪意をもって"実装すれば高確率でテスト通りますが、
|
11
11
|
要するにテストの文面でランダム値を使うことで、
|
12
12
|
実装者に「入力としてあり得るすべての値でテスト通るようにしろ」
|
13
13
|
という意図を伝える事ができるってことです。
|
14
14
|
|
15
|
+
ただ、この程度の関数だと、質問文のコードのままで意図が十分伝わるはずので
|
15
|
-
|
16
|
+
全然問題ないことになっちゃいますがね。
|
16
17
|
|
17
18
|
---
|
18
19
|
|
2
補足
answer
CHANGED
@@ -7,6 +7,15 @@
|
|
7
7
|
|
8
8
|
---
|
9
9
|
|
10
|
+
いや、特定の引数に対して変な値を返すように"悪意をもって"実装すればテスト通りますが、
|
11
|
+
要するにテストの文面でランダム値を使うことで、
|
12
|
+
実装者に「入力としてあり得るすべての値でテスト通るようにしろ」
|
13
|
+
という意図を伝える事ができるってことです。
|
14
|
+
|
15
|
+
そういう意味では別に質問文のコードのままで全然問題ないことになっちゃいますがね。
|
16
|
+
|
17
|
+
---
|
18
|
+
|
10
19
|
※回答じゃないです
|
11
20
|
|
12
21
|
質問文だとexpectの方を書き換えちゃってますが、
|
1
回答追加
answer
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
少々乱暴な方法ですが、
|
2
|
+
関数と関数が同じかを確かめる方法の一つに、
|
3
|
+
十分多い数、引数をランダム生成して、
|
4
|
+
全部通るか検証する方法があります。
|
5
|
+
|
6
|
+
"悪意を持った"実装者がよほど運が良くなければテスト通りません。
|
7
|
+
|
8
|
+
---
|
9
|
+
|
1
10
|
※回答じゃないです
|
2
11
|
|
3
12
|
質問文だとexpectの方を書き換えちゃってますが、
|