簡體   English   中英

如何為 discord 機器人編寫單元測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM