diff --git a/src/bun.js/test/expect.zig b/src/bun.js/test/expect.zig index c488c00aab..5a90ccc9af 100644 --- a/src/bun.js/test/expect.zig +++ b/src/bun.js/test/expect.zig @@ -2455,12 +2455,16 @@ pub const Expect = struct { var return_value_from_function: JSValue = .zero; if (!value.jsType().isFunction()) { - if (this.flags.promise != .none) { - if (value.isAnyError()) { - return .{ value, return_value_from_function }; - } else { - return .{ null, return_value_from_function }; - } + switch (this.flags.promise) { + .none => {}, + .rejects => return .{ value, return_value_from_function }, + .resolves => { + if (value.isAnyError()) { + return .{ value, return_value_from_function }; + } else { + return .{ null, return_value_from_function }; + } + }, } return globalThis.throw("Expected value must be a function", .{}); diff --git a/test/regression/issue/014076.test.ts b/test/regression/issue/014076.test.ts index 923e39798c..9accaed5b9 100644 --- a/test/regression/issue/014076.test.ts +++ b/test/regression/issue/014076.test.ts @@ -17,3 +17,27 @@ test("resolves not toThrow", async () => { await expect(Promise.resolve(new Error("abc"))).resolves.toThrow("abc"); await expect(Promise.reject(new Error("abc"))).rejects.toThrow("abc"); }); + +test("doesn't break rejects", () => { + expect( + (async () => { + throw new DOMException("123"); + })(), + ).rejects.toThrow("123"); +}); + +test("doesn't break rejects null", () => { + expect( + (async () => { + throw null; + })(), + ).rejects.toThrow(); +}); + +test("resolves null doesn't throw", () => { + expect( + (async () => { + return null; + })(), + ).resolves.not.toThrow(); +});