TestRender renders a component headlessly and returns a RenderedTree for querying and simulating interactions. No Fyne window is created.
(root View, opts ...TestOption)
| 5 | // TestRender renders a component headlessly and returns a RenderedTree |
| 6 | // for querying and simulating interactions. No Fyne window is created. |
| 7 | func TestRender(root View, opts ...TestOption) *RenderedTree { |
| 8 | scope := newScope(context.Background(), nil) |
| 9 | |
| 10 | for _, opt := range opts { |
| 11 | opt(scope) |
| 12 | } |
| 13 | |
| 14 | var node *viewNode |
| 15 | if comp, ok := root.(*componentNode); ok { |
| 16 | rendered := renderComponent(comp, scope) |
| 17 | node = rendered.viewNode() |
| 18 | // Resolve nested components |
| 19 | node = resolveTree(node, scope) |
| 20 | } else { |
| 21 | node = root.viewNode() |
| 22 | } |
| 23 | |
| 24 | rt := &RenderedTree{scope: scope, root: node, component: nil} |
| 25 | if comp, ok := root.(*componentNode); ok { |
| 26 | rt.component = comp |
| 27 | } |
| 28 | return rt |
| 29 | } |
| 30 | |
| 31 | func resolveTree(node *viewNode, scope *Scope) *viewNode { |
| 32 | if node.componentRef != nil { |
no test coverage detected