null-or-undefined-access.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. test("null/undefined object", () => {
  2. [null, undefined].forEach(value => {
  3. let foo = value;
  4. expect(() => {
  5. foo.bar;
  6. }).toThrowWithMessage(TypeError, `Cannot access property "bar" on ${value} object "foo"`);
  7. expect(() => {
  8. foo.bar = 1;
  9. }).toThrowWithMessage(TypeError, `Cannot access property "bar" on ${value} object "foo"`);
  10. expect(() => {
  11. foo[0];
  12. }).toThrowWithMessage(TypeError, `Cannot access property "0" on ${value} object "foo"`);
  13. expect(() => {
  14. foo[0] = 1;
  15. }).toThrowWithMessage(TypeError, `Cannot access property "0" on ${value} object "foo"`);
  16. });
  17. });
  18. test("null/undefined object key", () => {
  19. [null, undefined].forEach(value => {
  20. let foo = { bar: value };
  21. expect(() => {
  22. foo.bar.baz;
  23. }).toThrowWithMessage(
  24. TypeError,
  25. `Cannot access property "baz" on ${value} object "foo.bar"`
  26. );
  27. expect(() => {
  28. foo.bar.baz = 1;
  29. }).toThrowWithMessage(
  30. TypeError,
  31. `Cannot access property "baz" on ${value} object "foo.bar"`
  32. );
  33. });
  34. });
  35. test("null/undefined array index", () => {
  36. [null, undefined].forEach(value => {
  37. let foo = [value];
  38. let index = 0;
  39. expect(() => {
  40. foo[0].bar;
  41. }).toThrowWithMessage(
  42. TypeError,
  43. `Cannot access property "bar" on ${value} object "foo[0]"`
  44. );
  45. expect(() => {
  46. foo[0].bar = 1;
  47. }).toThrowWithMessage(
  48. TypeError,
  49. `Cannot access property "bar" on ${value} object "foo[0]"`
  50. );
  51. expect(() => {
  52. foo[index].bar;
  53. }).toThrowWithMessage(
  54. TypeError,
  55. `Cannot access property "bar" on ${value} object "foo[index]"`
  56. );
  57. expect(() => {
  58. foo[index].bar = 1;
  59. }).toThrowWithMessage(
  60. TypeError,
  61. `Cannot access property "bar" on ${value} object "foo[index]"`
  62. );
  63. });
  64. });