小编p3t*_*tch的帖子

为 Blazor 组件单元测试模拟 IJSRuntime

按照这个原型进行单元测试,我在使用 JS 互操作时遇到了问题。

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

只是添加一个使用 IJSRuntime 的组件会导致以下异常

System.InvalidOperationException:无法为“Application.Components.MyComponent”类型的属性“JsRuntime”提供值。没有“Microsoft.JSInterop.IJSRuntime”类型的注册服务。

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

如何使用 Moq 来模拟 IJSRuntime?

当我尝试类似的东西时

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

    host.AddService(jsRuntimeMock);

    var component = host.AddComponent<MyComponent>();
}
Run Code Online (Sandbox Code Playgroud)

我仍然得到例外

c# unit-testing moq blazor

6
推荐指数
1
解决办法
983
查看次数

无法在基本类型double上调用set Double(Double)

好吧,我对java非常不好(说实话,我讨厌编程,我更喜欢网络).无论如何,由于这是针对大学的,我实际上无法分享大部分代码而不用于学术不端行为,尽管我可以自由地寻求帮助.

我有一个带有一堆名字的JList,以及一个用于这些名称值的数组

final Double[] filmcost = { 5.00, 5.50, 7.00, 6.00, 5.00 };
Run Code Online (Sandbox Code Playgroud)

我想要做的是当有人从列表中选择某些东西时,它会将值分配给变量(它还将文本框设置为来自另一个数组的字符串,但这样可以正常工作).

所以我得到了我的变量

protected double filmCost;
Run Code Online (Sandbox Code Playgroud)

这是ListSelectionListener

filmList.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent evt) {
                                                    filmCost.setDouble(filmcost[filmList.getSelectedIndex()]);
            }
        });
Run Code Online (Sandbox Code Playgroud)

但是,它抱怨它"无法在原始类型double上调用set Double(Double)".我觉得解决方案非常简单,但我现在已经坚持了一个多小时.

java arrays double jlist

1
推荐指数
1
解决办法
2139
查看次数

标签 统计

arrays ×1

blazor ×1

c# ×1

double ×1

java ×1

jlist ×1

moq ×1

unit-testing ×1