Child objects of a mocked instance can't access their own private fields
Opened this issue · 0 comments
mchalapuk commented
Hi, I seem to be having a bit of a problem with mocked instances that have child objects that use private fields.
A short piece of code replicating the issue:
import test from "ava"
import { Mock } from "typemoq"
import * as crypto from "crypto"
class UUID {
#uuid: string
constructor(uuid: string = crypto.randomUUID()) {
this.#uuid = uuid
}
toString() {
return this.#uuid
}
}
test("test mock with a private field in a child object", t => {
const uuid = new UUID()
t.assert(uuid.toString(), uuid.toString()) // this works
const mock = Mock.ofInstance({ uuid })
mock.object.uuid.toString() // this throws an error
})
The error I'm getting is the following:
I think it has something to do with how proxies are used in typemoq.
If I'm missing something, I'd appreciate if someone could direct me to a solution. Otherwise, it seems to be a big problem which needs solving. I'm happy to work on it and create a PR but I would need some direction on how to solve it.
Thanks.