【问题标题】:Inject JSRuntime into Blazor TestHost将 JSRuntime 注入 Blazor TestHost
【发布时间】:2020-09-28 00:34:00
【问题描述】:

为了对我的 Blazor 服务器端组件/页面进行单元测试,我正在使用the Github repo SteveSandersonMS/BlazorUnitTestingPrototype 上提供的TestHost,发现阅读this article。 我的页面使用blazor radzen components library

我已设法注入 DbContext 和我自己的代码所需的所有其他组件,但 Radzen 库需要 IJSRuntime 接口的实例,并且必须为 TestHost 提供已实例化的对象。

我检查了通过在视图中注入IJSRuntime 实例化的类型,它是Microsoft.JSInterop.JSRuntime,它是一个带有受保护构造函数的抽象类。我在提供的 DLL 中搜索了实现 IJSRuntime 的可实例化类型,但找不到。

问题: 如何实例化IJSRuntime 的实现以进行手动注入?

【问题讨论】:

    标签: blazor blazor-server-side


    【解决方案1】:

    使用模拟:

    • 添加对Moq 的包引用(您可以使用您选择的模拟库,我更喜欢最小起订量)
    • 向 Moq 命名空间添加 using 语句
    using Moq;
    
    • 为 IJSRuntime 创建模拟
    var jsRuntimeMock = new Mock<IJSRuntime>();
    
    • TestHost DI 中注入模拟
    var host = new TestHost();
    host.ConfigureServices(services =>
    {
        services.AddSingleton(p => jsRuntimeMock.Object);
    }
    

    【讨论】:

    猜你喜欢
    • 2020-12-23
    • 1970-01-01
    • 2021-11-06
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2020-08-24
    相关资源
    最近更新 更多