const subscribers = []; let value = 'initial'; const observable = { subscribe: fn => { subscribers.push(fn); fn(value); return { unsubscribe: () => { const i = subscribers.indexOf(fn); subscribers.splice(i, 1); } }; } }; export default { props: { observable, visible: false }, html: ``, async test({ assert, component, target }) { assert.equal(subscribers.length, 0); component.visible = true; assert.equal(subscribers.length, 1); assert.htmlEqual(target.innerHTML, `

value: initial

`); value = 42; await subscribers.forEach(fn => fn(value)); assert.htmlEqual(target.innerHTML, `

value: 42

`); component.visible = false; assert.equal(subscribers.length, 0); } };