以下のdivision.test.jsに沿うdivision.jsを作成し、jestでのテスト(npm test)を行ったところ、エラーとなりました。
javascript
1//division.test.js 2const division = require('./division'); 3 4test('division by zero', () => { 5 expect(division(10, 0)).toThrow('0で割ることはできません'); 6});
https://jestjs.io/docs/ja/using-matchers を参考に作成したdivision.js
javascript
1//division.js 2function division(a, b) { 3 if(b === 0){ 4 throw new Error('0で割ることはできません'); 5 } 6 return a / b; 7} 8 9module.exports = division;
そこで、division.jsを以下のように変更しましたが再びエラーとなりました。
javascript
1//division.js 2function division(a, b) { 3 try { 4 if(b === 0){ 5 throw new Error('0で割ることはできません'); 6 } 7 return a / b; 8 } catch (error) { 9 console.log(error.message); 10 } 11} 12 13module.exports = division;
分からない点
- 2つめのエラーで> received value must be a function とありますが、division()の戻り値が関数にならないといけないということでしょうか。例外を投げるのに関数を返すとはどういった意味でしょうか。
- 参考にしたhttps://jestjs.io/docs/ja/using-matchers の例外に関する箇所では
javascript
1function compileAndroidCode() { 2 throw new Error('you are using the wrong JDK'); 3} 4 5test('compiling android goes as expected', () => { 6 expect(compileAndroidCode).toThrow(); 7 expect(compileAndroidCode).toThrow(Error); 8 9 // You can also use the exact error message or a regexp 10 expect(compileAndroidCode).toThrow('you are using the wrong JDK'); 11 expect(compileAndroidCode).toThrow(/JDK/); 12});
とあり、自分の最初のdivision.jsとは引数の有無のみ異なるように思うのですが、そのほかにエラーを引き起こす違いなどありますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/08 04:39