我只是在使用xUnit
和Moq
设置单元测试时遇到了问题。
方法测试方法()
包含逻辑,我想测试。它是异步的,虽然返回一个任务
public class Testee
{
private readonly IDoSomething _doSomething;
public Testee(IDoSomething doSomething)
{
_doSomething = doSomething;
}
public async Task TestMethod()
{
await _doSomething.DoAsync(true); // throws NullReferenceException in Unit-Test
}
}
接口IDo某物
看起来像这样
public interface IDoSomething
{
Task DoAsync(bool aboolean);
}
现在我像这样设置我的单元测试。
public class TesteeTest
{
[Fact]
public async Task MyTest()
{
var mock = new Mock<IDoSomething>();
mock.Setup(x => x.DoAsync(It.IsAny<bool>())).Verifiable();
var testee = new Testee(mock.Object);
await testee.TestMethod(); // Test breaks here because it throws an exception
mock.Verify(x => x.DoAsync(true), Times.Once);
mock.Verify(x => x.DoAsync(false), Times.Never);
}
}
为什么我会得到这个例外?
mock。Setup()
缺少返回值并返回null
。因此在TestMethod()
中,由\u doSomething返回的
为任务
。DoAsync(true)null
null
被等待,这当然会导致系统。NullReferneceException
。
为了解决这个问题,我建议添加。返回任务。完成任务)
到模拟设置。
mock.Setup(x => x.DoAsync(It.IsAny<bool>())).Returns(Task.CompletedTask).Verifiable();
当使用waiter模式编译wait
时,现在有一个任务要调用。GetAwaiter()
,返回一个TaskAwaiter
。这里更好地解释了这些原则:
没有await并且在非异步方法中调用异步方法的行为是什么?我这样问是因为我看到Visual Studio在调用异步方法时没有显示任何警告,好像这是一件非常正常的事情。在这种情况下,异步方法的行为是否像是同步的?
我试图在反应本机中捕捉状态栏的高度。 为此我写了以下代码 在这里,显示为,我打算将其存储在中,但之后的第二个console.log给了我未定义的值 这让我想到是函数。那么,有人能帮我计算一下高度吗?我们如何使用async wait来呈现react native
我正在处理来自TCP套接字的大量事件(每秒10个套接字),因此我使用多线程来处理这些事件。 大多数情况下,这是正确的,但有时会出现这些事件的雪崩,有时我会得到一个ConcurrentModificationException: 12-10 14:08:42.071:E/AndreidRuntime(28135):致命例外:线程-369 12-10 14:08:42.071:E/AndreidRun
null my Library的核心逻辑 客户将使用我们的库,他们将通过传递builder对象来调用它。然后,我们将通过使用对象构造一个URL,并通过执行该对象对该URL进行HTTP客户端调用,在将响应作为JSON字符串返回后,我们将通过创建对象将该JSON字符串按原样发送给客户。有些客户会调用,有些可能会调用方法,所以我需要在库中分别提供两个方法。 接口: 您将如何实现同步和异步方法给定上述标准
本文向大家介绍C#实现异步GET的方法,包括了C#实现异步GET的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现异步GET的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。