# bun:test/no-restricted-jest-methods

> Disallow the `jest` and `vi` methods that you list

Some teams agree not to use parts of the `jest` object, like module mocks, fake timers or spies. This rule reports the methods you list, with your own message if you give one, so the agreement doesn't depend on review.

The rule does nothing until you give it a list.

{/* Generated by src/codegen/lint-rule-docs.ts. Do not edit this section. */}

## Configure

Off by default. To turn it on:

```toml bunfig.toml
[lint.rules]
"bun:test/no-restricted-jest-methods" = "error" # or "warn"
```

{/* End of the generated section. */}

## Examples

These examples restrict `advanceTimersByTime` and `spyOn`.

Reported:

{/* bad {"count": 2, "options": [{"advanceTimersByTime": null, "spyOn": "Pass the dependency in instead of spying on it"}]} */}
```ts
import { expect, jest, test } from "bun:test";

test("retries after a second", () => {
  const send = jest.spyOn(mailer, "send");
  retry(send);
  jest.advanceTimersByTime(1000);
  expect(send).toHaveBeenCalledTimes(2);
});
```

Not reported:

{/* good {"options": [{"advanceTimersByTime": null, "spyOn": "Pass the dependency in instead of spying on it"}]} */}
```ts
import { expect, jest, test } from "bun:test";

test("retries once", () => {
  const send = jest.fn();
  retry(send);
  expect(send).toHaveBeenCalledTimes(2);
});
```

`vi` is checked the same way as `jest`:

{/* bad {"options": [{"spyOn": "Pass the dependency in instead of spying on it"}]} */}
```ts
import { vi } from "bun:test";

const send = vi.spyOn(mailer, "send");
```

Only methods of `jest` and `vi` are checked. The `spyOn` and `mock` functions that `"bun:test"` exports aren't:

{/* good {"options": [{"spyOn": "Pass the dependency in instead of spying on it"}]} */}
```ts
import { spyOn } from "bun:test";

const send = spyOn(mailer, "send");
```

## Options

The rule takes one object. Each key is a method name, and its value is the message to report.

```toml bunfig.toml
[lint.rules]
"bun:test/no-restricted-jest-methods" = ["error", {
  spyOn = "Pass the dependency in instead of spying on it",
}]
```

In a JSON or JavaScript config, use `null` in place of the message to get the default message: ``Use of `spyOn` is not allowed``.
