我有這個測驗需要運行RunWebSocket執行緒以確保SendAsync我的 websocket 收到了。這可行,但我收到編譯器警告CS4014。當然,我不喜歡警告,所以我不想忽略它,而是想“正確”地做。
[Fact]
public async void CabinetTagPushed_ShouldSendBroadcastToWebSocket()
{
// arrange
var websocket = Substitute.For<IWebSocket>();
restinterface.RunWebSocket(websocket);
// act
restinterface.Cabinet_OnTagPushed(null, new TagEventArgs());
// assert
await websocket.Received().SendAsync(Arg.Any<ArraySegment<byte>>(), WebSocketMessageType.Text, false, CancellationToken.None);
// this will end the RunWebSocket thread
websocket.CloseStatus = WebSocketCloseStatus.NormalClosure;
}
如何創建async正確啟動執行緒的測驗?
uj5u.com熱心網友回復:
首先,您的單元測驗方法必須是async Task,而不是async void。
接下來,所有任務通常都是一個好主意await,以確保您觀察到例外。假設警告在RunWebSocket通話中,那么它看起來像這樣:
[Fact]
public async Task CabinetTagPushed_ShouldSendBroadcastToWebSocket()
{
// arrange
var websocket = Substitute.For<IWebSocket>();
var runTask = restinterface.RunWebSocket(websocket);
// act
restinterface.Cabinet_OnTagPushed(null, new TagEventArgs());
// assert
await websocket.Received().SendAsync(Arg.Any<ArraySegment<byte>>(), WebSocketMessageType.Text, false, CancellationToken.None);
// this will end the RunWebSocket thread
websocket.CloseStatus = WebSocketCloseStatus.NormalClosure;
await runTask;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481905.html
上一篇:可重入鎖是物件級鎖還是類級鎖?
