gpt4 book ai didi

c# - 模拟 IJSRuntime 以进行 Blazor 组件单元测试

转载 作者:行者123 更新时间:2023-12-01 21:48:53 28 4
gpt4 key购买 nike

已关注 this prototype对于单元测试,我在使用 JS 互操作时遇到了问题。

[Test]
public void ExampleTest()
{
var component = host.AddComponent<MyComponent>();
}

仅添加使用 IJSRuntime 的组件将导致以下异常

System.InvalidOperationException : Cannot provide a value for property 'JsRuntime' on type 'Application.Components.MyComponent'. There is no registered service of type 'Microsoft.JSInterop.IJSRuntime'.

JS 互操作没有做任何有趣的事情,它只是一个专注于元素的 void 函数 - 我不关心测试它,我只是希望能够继续为组件本身编写测试。

如何使用 Moq 来模拟 IJSRuntime?

当我尝试类似的事情时

[Test]
public void ExampleTest()
{
var jsRuntimeMock = new Mock<IJSRuntime>();

host.AddService(jsRuntimeMock);

var component = host.AddComponent<MyComponent>();
}

我仍然遇到异常

最佳答案

host.AddService(jsRuntimeMock);

寄存器Mock<IJSRuntime>作为依赖。

实现中的类(测试程序集之外)不应具有此类依赖性,但这是一个常见错误。

注册 IJSRuntime使用 Mock<T> 作为依赖项属性(property)Object ,其中包含对实现该接口(interface)的对象的引用。

像这样:

host.AddService(jsRuntimeMock.Object);

关于c# - 模拟 IJSRuntime 以进行 Blazor 组件单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58589595/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com