#3479·ava

this.value[Symbol.iterator] is not a function

Author: thoughtsunificatorCreated Sep 2, 2026Updated Sep 2, 2026
Labelsneeds triage

"ava": "8.0.1"

javascript
import ava from "ava"

ava("Set a property and its value two depth deep", (test) => {
	const dynamicObject = new DynamicObject()
	dynamicObject.foo.bar = 1
	console.log(dynamicObject.foo.bar)
	test.deepEqual(dynamicObject.foo, {})
	test.is(dynamicObject.foo.bar, 1)
})

function DynamicObject(_data={}) {
	function wrapValue(t,p,v,handler) {
		const s = Symbol()
		const o = Proxy.revocable(v, handler)
		t[p] = o.proxy
		return o.proxy
	}
	const handler = {
		get: (t, p) => {
			let v = t[p]
			if(!v) {
				const placeholder = {}
				const proxy = wrapValue(t, p, placeholder, handler)
				v = proxy
			}
			return v
		},
	}
	return new Proxy(_data, handler)
}

Output is:

bash
  ✘ [fail]: Set a property and its value two depth deep Error thrown in test
  ─

  Set a property and its value two depth deep

  Error thrown in test:

  TypeError {
    message: 'this.value[Symbol.iterator] is not a function',
  }

  TypeError: this.value[Symbol.iterator] is not a function
      at ObjectValue.createIterableRecursor (/home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/concordance/lib/complexValues/object.js:131:51)
      at /home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/concordance/lib/complexValues/object.js:207:82
      at Object.replay (/home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/concordance/lib/recursorUtils.js:55:22)
      at Object.recursor (/home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/concordance/lib/complexValues/object.js:207:44)
      at format (/home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/concordance/lib/diff.js:146:46)
      at Object.diffDescriptors (/home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/concordance/lib/diff.js:377:11)
      at formatDescriptorDiff (file:///home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/ava/lib/assert.js:16:26)
      at ExecutionContext.deepEqual (file:///home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/ava/lib/assert.js:342:24)
      at file:///home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/index.js:7:7
      at Test.callFn (file:///home/foo/p/nodejs-packages/ava/issue-symbol-iterator-is-not-a-function/node_modules/ava/lib/test.js:532:26)

  ─

  1 test failed

shell returned 1

Press ENTER or type command to continue

I expect the test to pass.