Переглянути джерело

LibJS: Add descriptive output to test-commons expect().toThrow()

This (and still some other methods) just say Expectation error leaving
the user completely in the dark whether the method threw at all.
And since we have nice function printing now we can just toString the
function since most are lambda's.
davidot 2 роки тому
батько
коміт
80f23abd0a
1 змінених файлів з 20 додано та 4 видалено
  1. 20 4
      Userland/Libraries/LibJS/Tests/test-common.js

+ 20 - 4
Userland/Libraries/LibJS/Tests/test-common.js

@@ -306,14 +306,30 @@ class ExpectationError extends Error {
                     threw = false;
                     threw = false;
                 } catch (e) {
                 } catch (e) {
                     if (typeof value === "string") {
                     if (typeof value === "string") {
-                        this.__expect(e.message.includes(value));
+                        this.__expect(
+                            e.message.includes(value),
+                            `Expected ${this.target.toString()} to throw and message to include "${value}" but message "${
+                                e.message
+                            }" did not contain it`
+                        );
                     } else if (typeof value === "function") {
                     } else if (typeof value === "function") {
-                        this.__expect(e instanceof value);
+                        this.__expect(
+                            e instanceof value,
+                            `Expected ${this.target.toString()} to throw and be of type ${value} but it threw ${e}`
+                        );
                     } else if (typeof value === "object") {
                     } else if (typeof value === "object") {
-                        this.__expect(e.message === value.message);
+                        this.__expect(
+                            e.message === value.message,
+                            `Expected ${this.target.toString()} to throw and message to be ${value} but it threw with message ${
+                                e.message
+                            }`
+                        );
                     }
                     }
                 }
                 }
-                this.__expect(threw);
+                this.__expect(
+                    threw,
+                    `Expected ${this.target.toString()} to throw but it didn't throw anything`
+                );
             });
             });
         }
         }