Насмешка поблочного тестирования Ajax с помощью Jack

Я использую Jack в качестве библиотеки насмешки JavaScript. http://github.com/keronsen/jack. Я также использую qunit.

У меня есть следующий вызов Ajax в моем коде JavaScript, на который я являюсь Трингом к тесту записи.

$.ajax({
    url: $('#advance_search_form').attr('action'),
    type: 'post',
    dataType: 'json',
    data: parameterizedData,
    success: function(json) {
        APP.actOnResult.successCallback(json);
    }
});

Следующий код работает.

jack(function() {
    jack.expect('$.ajax').exactly('1 time');
}

Однако я хочу протестировать, если все аргументы правильно отправлены. Я попробовал следующее, но не работал.

jack.expect('$.ajax').exactly('1 time').whereArgument(0).is(function(){

var args = аргументы; хорошо ('http://localhost:3000/users', args.url, 'URL должен быть допустимым');//similary тестируют на многие ключи объекта});

Я хочу овладеть аргументами так, чтобы я мог выполнить батарею теста.

5
задан Nick Vanderbilt 16 February 2010 в 18:56
поделиться

1 ответ

Два подхода:

Использовать .hasProperties():

jack.expect('$.ajax').once()
    .whereArgument(0).hasProperties({
         'type': 'post',
         'url': 'http://localhost:3000/users'
    });

... или перехватывать аргументы и делать qunit assertions:

var ajaxArgs;
jack.expect('$.ajax').once().mock(function() { ajaxArgs = arguments[0]; });
// ... the code that triggers .ajax()
equals('http://localhost:3000/users', ajaxArgs.url);

Первый вариант использует больше API Jack (который заслуживает лучшей документации), и более читабелен, IMO.

В последнем варианте вы получите гораздо более качественные отчеты об ошибках.

4
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: