Синон: Утвердить, что заглушку назвали определенным образом в первый раз - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть функция, которая использует заглушку снова и снова в al oop. Я хотел бы утверждать, что определенные аргументы были переданы в первый раз, когда он был использован. Как ты это делаешь?

Эта документация, похоже, не дает тебе пути: https://sinonjs.org/releases/latest/assertions/

Но в шпионской документации, вы можете сделать это:

require("@fatso83/mini-mocha").install();

const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;
const jsdom = require("jsdom");
const JSDOM = jsdom.JSDOM;
const window = new JSDOM().window;
const document = new JSDOM("").window;
const jQuery = require("jquery")(window);
global.document = document;

describe("Return nth call", () => {
    const sandbox = sinon.createSandbox();

    beforeEach(() => {
        sandbox.spy(jQuery, "ajax");
    });

    afterEach(() => {
        sandbox.restore();
    });

    it("should inspect jQuery.getJSON's usage of jQuery.ajax", () => {
        const url = "https://jsonplaceholder.typicode.com/todos/1";
        jQuery.ajax(url);
        const spyCall = jQuery.ajax.getCall(0);

        assert.equals(url, spyCall.args[0]);
    });
});

Дело в том, что я использую заглушку, а не шпиона, поэтому я не думаю, что смогу использовать это. Причина, по которой я использую заглушку, заключается в том, что я определенно хочу, чтобы возвращаемое значение этого двойного теста было определенным значением. Документация по sinon немного фрагментирована, и я не смог найти способ заставить тест дважды принудительно возвращать значение, а также утверждать аргументы, которые передаются в него для конкретного вызова c. Как вы делаете оба?


Теперь я вижу, что у объекта-заглушки есть метод getCall (спасибо, машинопись). Я думаю, заглушка расширяет шпион.

...