std/expect/_to_have_been_nth_called_with_test.ts

57 lines
1.5 KiB
TypeScript

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { expect } from "./expect.ts";
import { fn } from "./fn.ts";
import { AssertionError, assertThrows } from "@std/assert";
Deno.test("expect().toHaveBeenNthCalledWith()", () => {
const mockFn = fn();
mockFn(1, 2, 3);
mockFn(4, 5, 6);
mockFn(7, 8, 9);
expect(mockFn).toHaveBeenNthCalledWith(2, 4, 5, 6);
expect(mockFn).not.toHaveBeenNthCalledWith(2, 1, 2, 3);
expect(mockFn).not.toHaveBeenNthCalledWith(1, 4, 5, 6);
assertThrows(() => {
expect(mockFn).toHaveBeenNthCalledWith(2, 1, 2, 3);
}, AssertionError);
assertThrows(() => {
expect(mockFn).toHaveBeenNthCalledWith(1, 4, 5, 6);
}, AssertionError);
assertThrows(() => {
expect(mockFn).not.toHaveBeenNthCalledWith(2, 4, 5, 6);
});
});
Deno.test("expect().toHaveBeenNthCalledWith() should throw when mock call does not exist", () => {
const mockFn = fn();
mockFn("hello");
expect(mockFn).toHaveBeenNthCalledWith(1, "hello");
assertThrows(
() => {
expect(mockFn).toHaveBeenNthCalledWith(2, "hello");
},
AssertionError,
'Expected the n-th call (n=2) of mock function is with "hello", but the n-th call does not exist',
);
});
Deno.test("expect().toHaveBeenNthCalledWith() throw when n is not a positive integer", () => {
const mockFn = fn();
assertThrows(
() => {
expect(mockFn).toHaveBeenNthCalledWith(0, "hello");
},
Error,
"nth must be greater than 0: received 0",
);
});