Я пытаюсь создать метод assert в Javascript.Некоторое время я боролся с arguments.callee.caller и друзьями, но я не могу найти способ надежно получить полный текст вызывающей функции и найти, какое совпадение в этом тексте называется текущей функцией.
Я хочу иметь возможность использовать мою функцию следующим образом:
var four = 5;
function calculate4() { return 6; }
assert(4 == 2 + 3);
assert(4 == four);
assert(4 == calculate4());
assert(4 != 3 && 2 < 1)
и получить вывод, подобный следующему:
Утверждение 4 == 2 + 3 не удалось.Утверждение 4 == четыре не удалось.Утверждение 4 == вычисления4 () не удалось.Утверждение 4! = 3 && 2
Сейчас я не могу выйти за рамки Assertion false failed.
, что не очень полезно ...
Я бы хотел избежать передачи дополнительных параметров (например,как this
), потому что я хочу сохранить код подтверждения как можно более чистым и потому, что он будет напечатан много, много раз.Я не против сделать это строкой, но меня беспокоят проблемы с областями видимости при попытке eval () этой строки.Если у меня нет других вариантов или мои опасения необоснованны, скажите, пожалуйста.
Я запускаю это в приложении .hta на Windows, так что это действительно jscript, и у меня есть полный доступ кфайловая система, ActiveX и т. д., поэтому системные решения подходят (если они не требуют Firebug и т. д.).Однако я бы предпочел общее решение.