У меня есть функция, которая использует заглушку снова и снова в 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
(спасибо, машинопись). Я думаю, заглушка расширяет шпион.