Вы не упомянули о том, какие библиотеки вы используете, поэтому я просто продолжу и предположим, что ваш запрос ajax состоит из запроса GET с использованием jQuery.
Обычно это было бы что-то вроде:
$.ajax({
url: 'http://server/populate_table',
data: {foo: 'bar'},
success: populate_table
});
Кроме того, я буду считать, что сервер будет возвращен следующий объект {row: [1, 2, 3]}
Для начала вам нужно издеваться ответ AJAX, так как вы не хотите, чтобы полагаться на вашем сервере. Насмешливый, проверка параметров и поддельной возврата данных может быть достигнуто с помощью шпиона как таковой:
var ajaxMock = spyOn($, 'ajax').andCallFake(function (options) {
expect(options.url).toEqual('http://server/populate_table');
expect(options.data.foo).toEqual('bar');
options.success({row: [1, 2, 3]};
});
Обратите внимание, как выше определении ожиданий относительно URL и данных, которые должны быть получены сервером до вызывая обратный вызов с результатом.
Наконец, вам нужно выяснить, была ли заполнена ваша таблица. Вы не предоставляете никакой информации о данных или таблице, но, снова угадывая, что вы используете jQuery, вы должны попытаться сделать jasmine-jquery. С его помощью вы можете легко охарактеризовать ожидания своего DOM, взгляните на расширенные документы. После того, как вы оседают на то, что вы хотите проверить, ваш полный тест будет выглядеть так:
it('populates the table making a JSON call', function() {
var ajaxMock = spyOn($, 'ajax').andCallFake(function (options) {
expect(options.url).toEqual('http://server/populate_table');
expect(options.data.foo).toEqual('bar');
options.success({row: [1, 2, 3]};
});
$.ajax({
url: 'http://server/populate_table',
data: {foo: 'bar'},
success: populate_table
});
expect($('#mytable')).toExist();
// DOM specific expectations go here...
});
Также обратите внимание на Mocking и заглушек, так как вы не можете запрос AJAX на самом деле пожар. Для них существует множество библиотек, таких как: http://sinonjs.org/ (я не использовал этот, но он выглядит довольно аккуратно) – d2kagw
Все шпионские материалы, которые поставляют синоны, в жасмине, я считаю. Мы используем метод шпионажа только в жасмине. Мы хотим, чтобы запросы Ajax срабатывали - точка тестирования в нашем сознании заключается в том, чтобы точно воспроизводить то, что пользователь будет использовать с помощью нашего кода. – tkone