0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScriptのassertテストで「AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:」と返された時の対応

Posted at

どうも、N高生のゆういちです。
見慣れないエラー文を直面したので、その解消法をご紹介します。

N予備校アプリのプログラミング授業より「XSSの脆弱性対策」で、
脆弱性が正しくできているかどうかを意図的に試すことをしました。
その際にテスト中に起こったエラーを解消したことを書きます。

該当のエラー文が以下です。

assert.js:350
    throw err;
    ^

AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:

  assert(html.includes("<script>alert(\'test\');</script>"))

    at Object.<anonymous> (/home/vagrant/workspace/secret-board-3028/test.js:19:1)
<以下略>

AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:と出ましたが、「テストしたところ、falseという値を返します」と言われましたね。
値が合致していないということかな?

該当コード

test.js
'use strict';
const pug = require('pug');
const assert = require('assert');

const html = pug.renderFile('./views/posts.pug', {
  posts: [
    {
      id: 1,
      content: "<script>alert(\'test\'); </script>",
      postedBy: 'guest1',
      trackingCookie: 1,
      createdAt: new Date(),
      updatedAt: new Date()
    }
  ],
  user: 'guest1'
});

assert(html.includes("&lt;script&gt;alert(\'test\');&lt;/script&gt;"));
console.log('テストが正常に完了しました');

投稿を表すオブジェクトのcontentプロパティにscriptタグを入れて、assert関数によってその文字列が含まれているかどうかを判定します。

解決したこと

contentプロパティの"<script>alert(\'test\'); </script>"の、;と<の間に1つ半角スペースが入ってあるのが気になったので、これを消して再度テストを実行。

$ node test.js
テストが正常に完了しました

無事に実行できました。単純な記述ミスでしたので早めに気づいてよかったです。
assertはfalseの時はエラーメッセージが返ってくるということをヒントに、文字列が間違っているのかなと仮説を立てたことでなんとか実現したいことができました。

初歩的ながら記述やスペルが合っているかを確認することは大事だと気づかされました。
ではまた!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?