Как тестировать запросы к API

232
25 марта 2017, 01:10

Здравствуйте. Стараюсь писать тесты к модулям. У меня есть модуль, который имеет примерно такую структуру:

class Article {
    static setNominate (pagename, nominateTemplate, callback) {
        Api.getText(
            pagename,
            text => {
                Api.setText(
                    pagename,
                    `${nominateTemplate}\n${text}`,
                    param => {
                        callback(param)
                    }
                )
            }
        )
    }
}

Модуль Api делает только ajax-запросы к серверу, примерно выглядящие так:

class Api {
    static getText (pagename, callback) {
        $.ajax({
            url:  '/w/api.php',
            data: {
                action: 'parse',
                page:   pagename,
            },
            success: text => {
                callback(text)
            }
        })
    }
}

То есть запрос, а в колбэке ещё запрос. Давать управление управляющему модулю мне не очень приятно, так как это бездарно увеличит код и не даст абстракции. Поэтому, нужен запрос в запросе.

В тестах использую мочу, моча-дум и синон (где умею только $.ajax.calledWithMatch).

var assert = require('assert')
var sinon  = require('sinon')
var jsdom  = require('mocha-jsdom')
READ ALSO
не работает select2, angular [дубликат]

не работает select2, angular [дубликат]

На данный вопрос уже ответили:

338
Не работает POST запрос после form.submit

Не работает POST запрос после form.submit

При написании расширения для Firefox, который бы просто отправлял POST запрос при выборе пункта в контекстном меню, столкнулся с такой проблемой:...

207
JavaScript не сортирует колонки с датой в таблице HTML

JavaScript не сортирует колонки с датой в таблице HTML

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

209
Как перехватить AJAX запрос?

Как перехватить AJAX запрос?

Работаю с API SpotifyНужно сделать чтобы во время загрузки по api загружался loader и на странице нельзя было совершать каких-нибудь действий

309