JavaScriptExceptionTests.cs 1.1 KB

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