Тестирование AngularJS - эмуляция нажатия клавиши и получение значения ввода

В настоящее время я использую jasmine для тестирования моего кода angularjs, и у меня есть директива, подобная автозаполнению, которая должна начинать запрашивать данные с сервера, когда пользователь вводит некоторые символы во входные данные.

Теперь вот мой тестовый код:

        var element = linkingFn(scope);

    var $input = $("input", element);
    expect($input.length).toBe(1);

    var keyVal = 111;   // 'o'
    $input.trigger({
        type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal
    });
    keyVal = 110;   // 'n'
    $input.trigger({
        type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal
    });
    keyVal = 101;   // 'e'
    $input.trigger({
        type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal
    });

    // THIS DOES NOT WORK
    expect($input.val()).toBe("one");

$input.val() всегда пуст. Насколько я понимаю, поскольку он не работает в браузере, события (очевидно) не запускаются, поэтому val() не установлен. Итак, каковы мои варианты здесь?


person alvipeo    schedule 21.08.2014    source источник
comment
Добро пожаловать в мир боли. Вот мой вопрос, заданный некоторое время назад в аналогичных строках - возможно, вы найдете здесь что-то полезное: stackoverflow.com/questions/22574431/   -  person Michael Bromley    schedule 21.08.2014