Бессмысленно внедрять IDisposable в модульных тестах? - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть следующие модульные тесты для метода расширения. Оба теста используют один и тот же объект (IBinanceClient), поэтому я сделал это в конструкторе. Он реализует IDisposable, потому что IBinanceClient тоже. Вопрос в следующем: действительно ли внедрение IDisposable в модульных тестах действительно полезно / хорошая практика?

Я также открыт для любых рекомендаций по остальному коду, даже если это не так уж много.

using Binance.Net;
using Binance.Net.Interfaces;
using Binance.Net.Objects;
using XBot.Models.Strategies.Whore;
using CryptoExchange.Net.Authentication;
using System;
using Xunit;

namespace XBot.Tests
{
    public class NoobStrategyExtensionsTests : IDisposable
    {
        private readonly IBinanceClient _client;

        public NoobStrategyExtensionsTests()
        {
            _client = new BinanceClient(new BinanceClientOptions()
            {
                ApiCredentials = new ApiCredentials("-", "-"),
                AutoTimestamp = true,
                AutoTimestampRecalculationInterval = TimeSpan.FromMinutes(30)
            });
        }

        [Fact]
        public void CheckAndFillBNB_OneBNB_ReturnsTrue()
        {
            // Arrange

            // Act
            bool actual = _client.CheckAndFillBNB(1, true);

            // Assert
            Assert.True(actual);
        }

        [Theory]
        [InlineData(3, false)]
        [InlineData(1, true)]
        [InlineData(2, false)]
        [InlineData(1.99, true)]
        public void CheckAndFillBNB_MultipleBNBQuantities_ReturnsTrue(decimal input, bool expected)
        {
            // Arrange

            // Act
            bool actual = _client.CheckAndFillBNB(input, true);

            // Assert
            Assert.Equal(expected, actual);
        }

        public void Dispose()
        {
            if (_client != null)
                _client.Dispose();
        }
    }
}

...