Reflect.getOwnPropertyDescriptor.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. test("length is 2", () => {
  2. expect(Reflect.getOwnPropertyDescriptor).toHaveLength(2);
  3. });
  4. describe("errors", () => {
  5. test("target must be an object", () => {
  6. [null, undefined, "foo", 123, NaN, Infinity].forEach(value => {
  7. expect(() => {
  8. Reflect.getOwnPropertyDescriptor(value);
  9. }).toThrowWithMessage(
  10. TypeError,
  11. "First argument of Reflect.getOwnPropertyDescriptor() must be an object"
  12. );
  13. });
  14. });
  15. });
  16. describe("normal behavior", () => {
  17. test("get descriptor of undefined object property", () => {
  18. expect(Reflect.getOwnPropertyDescriptor({})).toBeUndefined();
  19. expect(Reflect.getOwnPropertyDescriptor({}, "foo")).toBeUndefined();
  20. });
  21. test("get descriptor of defined object property", () => {
  22. var o = { foo: "bar" };
  23. var d = Reflect.getOwnPropertyDescriptor(o, "foo");
  24. expect(d.value).toBe("bar");
  25. expect(d.writable).toBeTrue();
  26. expect(d.enumerable).toBeTrue();
  27. expect(d.configurable).toBeTrue();
  28. });
  29. test("get descriptor of array length property", () => {
  30. var a = [];
  31. d = Reflect.getOwnPropertyDescriptor(a, "length");
  32. expect(d.value).toBe(0);
  33. expect(d.writable).toBeTrue();
  34. expect(d.enumerable).toBeFalse();
  35. expect(d.configurable).toBeFalse();
  36. });
  37. });