Если это модульный тест, я предполагаю, что вы проверяете выходные данные функции при наличии определенных входов?
Вот мое мнение:
Вы должны подготовиться к случаю, когда вызывается document.ready, и к случаю, когда это не так.
Таким образом, ваш модульный тест должен запускать каждую функцию дважды - один раз для имитации вызова до готовности и один для имитации вызова после готовности. То есть у вас должен быть один прогон, в котором все, что происходит с документом, уже выполняется, и один прогон, где он просто игнорируется (предположительно, будет вызван позже в жизненном цикле).
EDIT:
Просто перечитайте вопрос и поняли его немного больше. Вы можете просто переопределить $ (document) .ready, чтобы сделать то, что вы хотите (что не должно ждать запуска события DOMLoaded, а вместо этого немедленно запускать функции). Этот фрагмент заменит функцию $ (document) .ready функцией, которая делает именно это. Он должен работать до любых юнит-тестов.
var postReady = true; // or false to ignore the function calls.
jQuery.fn.ready = function(fn)
{
if(postReady && fn) fn();
}
Пример теста:
<html><head><title>whatever</title>
<script type="text/javascript" src="/JS/jquery-1.3.2.js"></script>
<script type="text/javascript">
var postReady = true; // or false to ignore the function calls.
jQuery.fn.ready = function(fn)
{
alert("We stole ready!");
if(postReady && fn) fn();
}
$(document).ready(function()
{
alert("The function is called.");
});
</script>
</head><body></body>
</html>