[英]How to write unit-tests for discord bot
我目前正在嘗試使用 TDD 編寫我的第一個項目,並且我選擇了一個基於 Discord.Net 的 discord 機器人來執行此操作。
但是一開始我就面臨一個關於 Discord.Net 使用的抽象類的問題。 我的第一個測試應該關注 CommandHandler(稍后我將提取到它的接口和實現部分)。
如果機器人是命令的作者,第一個測試應該檢查命令是否被忽略。 因此,我的OnMessageReceivedAsync
方法將接受SocketMessage
,但這是一個抽象的 class。
我應該如何 go 關於這個並為基於 Discord.Net 的 discord 機器人編寫適當的單元測試?
更新:我什至嘗試使用 Moq 和 mocking 和IMessage
,但我無法設置模擬,因為幾乎所有字段都是只讀的。 所以我也不能用這個設置Author
。
我的模擬嘗試如下:
using Discord;
using Moq;
using Xunit;
namespace Runa.DiscordBot.Infrastructure.Tests
{
public class CommandHandlerTests
{
[Fact]
public void OnMessageReceivedAsync_IgnoresSelfAsCommandIssuer()
{
Mock mockMessage = new Mock<IMessage>()
.Setup(msg => msg.Author = "bot");
}
}
}
但如上所述,當我嘗試設置msg.Author = "bot"
時出現訪問錯誤,因為Author
字段沒有set
訪問器。
Mock<IMessage> mockMessage = new Mock<IMessage>();
mockMessage.SetupGet(msg => msg.Author).Returns("bot");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.