JavaScriptExceptionTests.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Jint.Native;
  2. using Jint.Runtime;
  3. namespace Jint.Tests.PublicInterface;
  4. public class JavaScriptExceptionTests
  5. {
  6. [Fact]
  7. public void CanCreateAndThrowJavaScriptException()
  8. {
  9. var engine = new Engine();
  10. engine.SetValue("throw1", () =>
  11. {
  12. throw new JavaScriptException(engine.Intrinsics.Error, "message 1");
  13. });
  14. engine.SetValue("throw2", () =>
  15. {
  16. throw new JavaScriptException(new JsString("message 2"));
  17. });
  18. Assert.Throws<JavaScriptException>(() =>
  19. {
  20. engine.Evaluate(@"throw1()");
  21. });
  22. var result1 = engine.Evaluate(@"try { throw1() } catch (e) { return e; }");
  23. var error1 = Assert.IsType<JsError>(result1);
  24. Assert.Equal("message 1", error1.Get("message").ToString());
  25. var result2 = engine.Evaluate(@"try { throw2() } catch (e) { return e; }");
  26. var jsString = Assert.IsType<JsString>(result2);
  27. Assert.Equal("message 2", jsString.ToString());
  28. }
  29. }