【问题标题】:How to mock out a Blazor component rendered within another component?如何模拟在另一个组件中呈现的 Blazor 组件?
【发布时间】:2020-07-30 17:33:40
【问题描述】:

假设我有以下Parent.razor 组件:

<div>
    <span>Below is a child component.</span>
    <Child/>
</div>

其中Child 是一个非常复杂的组件Child.razor

如果我想对Parent.razor 进行单元测试,如何模拟&lt;Child/&gt; 以便测试仅关注Parent 组件?我使用哪些库?

【问题讨论】:

  • 你试过bUnit吗?
  • 如果我错了,请纠正我,但 bUnit 只是一个测试框架,没有模拟工具。
  • 模拟组件需要IChild(或parent.child 参数)和某种注入。这会很困难,而且可能不值得……你如何看待模拟 api 的工作原理?
  • 一个示例 api:Mock("replacement html")?
  • 嗯,是的,类似的东西。我来自反应背景。在反应中,我们将使用 Jest.Mock() 将某些组件替换为
    {children}

标签: unit-testing mocking nunit blazor bunit


【解决方案1】:

除非您将 Parent 组件设计为可以在运行时替换它的子组件(例如通过 RenderFragment 参数),否则您不能在运行时替换组件,因此不能模拟它。

.net 5 中有一个变化将允许 bUnit 执行此操作,但对于当前版本的 Blazor 这是不可能的。

【讨论】:

  • 阅读此答案的人可能还对几天前打开的this GitHub issue 感兴趣。
  • 正确,我们正在努力启用此方案。感谢分享链接@J.P.tenBerge
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2020-01-04
  • 2020-11-04
  • 2020-09-16
  • 1970-01-01
  • 2021-06-10
  • 2018-10-31
相关资源
最近更新 更多