Elixir 如何使用render_change结果匹配特定元素?
我正在测试LiveView表单 我得到的结果是一个包含呈现html的字符串 我想断言结果有一些特定的元素。它可以用这样的函数来完成Elixir 如何使用render_change结果匹配特定元素?,elixir,phoenix-framework,ex-unit,phoenix-live-view,Elixir,Phoenix Framework,Ex Unit,Phoenix Live View,我正在测试LiveView表单 我得到的结果是一个包含呈现html的字符串 我想断言结果有一些特定的元素。它可以用这样的函数来完成 assert view |> element("#target", "test") |> has_element?() 但它只接受LiveView的实例,而不是html字符串 断言render\u change/2结果将具有特定文本的特定标记的最佳方法是什么?有三种主要方法可以验证这一点 第一个也是最简单的方法是
assert view |> element("#target", "test") |> has_element?()
但它只接受LiveView的实例,而不是html字符串
断言
render\u change/2
结果将具有特定文本的特定标记的最佳方法是什么?有三种主要方法可以验证这一点
第一个也是最简单的方法是将更新后的HTML与元素中的特定文本进行比较。比如说:
html=
看法
|>元素(“过滤器形式”)
|>渲染更改(%%{filter:%%{days:“14”})
断言html=~“我的特定文本”
另一种方法是解析HTML并找到所需的元素,如:
html=
看法
|>元素(“过滤器形式”)
|>渲染更改(%%{filter:%%{days:“14”})
断言[元素]=
html
|>Floki.parse_文件!()
|>Floki.find(“目标”)
通过该元素
,您还可以验证特定属性
最后一个就是你建议的。LiveView测试中使用的视图
是处理事件的参考。因此,当您调用render.*
testhelper函数时,该函数的状态会发生变化。因此:
assert view |>element(“#目标”、“测试”)|>has_element()
通常应该有效
assert view |> element("#target", "test") |> has_element?()