2
1

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.

[メモ] Jestで特定のメソッドが呼ばれていないことをアサートする

Last updated at Posted at 2020-12-25

やりたいこと

テストコードをJestで書いていて、特定のメソッドがコールされてないことをチェックしたい
というかES6以下で対象メソッドが動くことを確認したい

もっと良いやり方ありそうなのでご存じの方教えて頂きたいです...

やりかた

下記のような指定の文字で終わっているか確認するメソッドがあるとします。
endsWithを使ってはいけない制約があるとします

app.js
// 指定の文字で終わっているか確認します
// ES6で導入されたendsWithは使ってはいけない

/**
 * @param {String} str
 * @param {String} target
 */
function confirmEnding(str, target) {
  const len = str.length;
  return str.substring(len - target.length, len) === target;
}

module.exports = confirmEnding;

endsWithが使われていないことをアサートしたい場合
メソッド自体を文字列化し、対象のメソッドが文字列に含まれていないことを確認します

app.test.js
const confirmEnding = require("./ConfirmtheEndingTargetStr");

test("confirmEnding()はendsWithを使用していけません", () => {
  const result = confirmEnding
    .toString()
    .replace(confirmEnding.name, ""); // メソッド名に`endsWith`が入ってるとだめなので、消しておく
  expect(result.includes("endsWith")).toBeFalsy();
});
2
1
1

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?