初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,57 @@
|
||||
import { act, renderHook } from "@testing-library/react";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
|
||||
import { EGG_VERSES, pickEggVerse, useEasterEgg } from "./useEasterEgg";
|
||||
|
||||
describe("useEasterEgg", () => {
|
||||
it("连点 5 次触发 onReveal", () => {
|
||||
const onReveal = vi.fn();
|
||||
const { result } = renderHook(() => useEasterEgg({ onReveal }));
|
||||
for (let i = 0; i < 5; i++) act(() => result.current.onClick());
|
||||
expect(onReveal).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("不足 5 次不触发 onReveal", () => {
|
||||
const onReveal = vi.fn();
|
||||
const { result } = renderHook(() => useEasterEgg({ onReveal }));
|
||||
for (let i = 0; i < 4; i++) act(() => result.current.onClick());
|
||||
expect(onReveal).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("连点 9 次触发 onAscend(九枢升格)", () => {
|
||||
const onAscend = vi.fn();
|
||||
const { result } = renderHook(() => useEasterEgg({ onAscend }));
|
||||
for (let i = 0; i < 9; i++) act(() => result.current.onClick());
|
||||
expect(onAscend).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("双层彩蛋:5 次弹谶语、9 次升格,各触发一次", () => {
|
||||
const onReveal = vi.fn();
|
||||
const onAscend = vi.fn();
|
||||
const { result } = renderHook(() => useEasterEgg({ onReveal, onAscend }));
|
||||
for (let i = 0; i < 9; i++) act(() => result.current.onClick());
|
||||
expect(onReveal).toHaveBeenCalledTimes(1);
|
||||
expect(onAscend).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("升格后归零,可再次触发双层", () => {
|
||||
const onReveal = vi.fn();
|
||||
const onAscend = vi.fn();
|
||||
const { result } = renderHook(() => useEasterEgg({ onReveal, onAscend }));
|
||||
for (let i = 0; i < 9; i++) act(() => result.current.onClick());
|
||||
for (let i = 0; i < 9; i++) act(() => result.current.onClick());
|
||||
expect(onReveal).toHaveBeenCalledTimes(2);
|
||||
expect(onAscend).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it("pickEggVerse 返回谶语池中一条", () => {
|
||||
expect(EGG_VERSES).toContain(pickEggVerse());
|
||||
});
|
||||
|
||||
it("未传回调时达阈值不抛错", () => {
|
||||
const { result } = renderHook(() => useEasterEgg());
|
||||
expect(() => {
|
||||
for (let i = 0; i < 9; i++) act(() => result.current.onClick());
|
||||
}).not.toThrow();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user