Reflect.getOwnPropertyDescriptor.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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(TypeError, `${value} is not an object`);
  10. });
  11. });
  12. });
  13. describe("normal behavior", () => {
  14. test("get descriptor of undefined object property", () => {
  15. expect(Reflect.getOwnPropertyDescriptor({})).toBeUndefined();
  16. expect(Reflect.getOwnPropertyDescriptor({}, "foo")).toBeUndefined();
  17. });
  18. test("get descriptor of defined object property", () => {
  19. var o = { foo: "bar" };
  20. var d = Reflect.getOwnPropertyDescriptor(o, "foo");
  21. expect(d.value).toBe("bar");
  22. expect(d.writable).toBeTrue();
  23. expect(d.enumerable).toBeTrue();
  24. expect(d.configurable).toBeTrue();
  25. });
  26. test("get descriptor of array length property", () => {
  27. var a = [];
  28. d = Reflect.getOwnPropertyDescriptor(a, "length");
  29. expect(d.value).toBe(0);
  30. expect(d.writable).toBeTrue();
  31. expect(d.enumerable).toBeFalse();
  32. expect(d.configurable).toBeFalse();
  33. });
  34. });