Модульное тестирование метода File.ReadAllText - PullRequest
0 голосов
/ 28 апреля 2020

Привет, я учусь писать тесты с помощью xUnit. Я использовал System.IO.Abstractions в этом классе, чтобы использовать интерфейс IFileSystem.

public class MyDictionary : IMyDictionary   
{
    IFileSystem _fileSystem;
    public MyDictionary() : this (new FileSystem()) {}

    public MyDictionary(IFileSystem fileSystem)
    {
        _fileSystem = fileSystem;
    }
    public Dictionary<string, string> GetDictionary()
    {
        return JsonConvert.DeserializeObject<Dictionary<string, string>(_fileSystem.File.ReadAllText("dictionary.json"));
    }

}

Вот тест, который я написал, используя Moq

    [Fact]
    public void GetDictionary_ShouldReturnDictionary()
    {
       using (var mock = AutoMock.GetLoose())
        {
            mock.Mock<IFileSystem>().Setup(x => x.File.ReadAllText("dictionary.json"))
                .Returns(JsonConvert.SerializeObject(dic));

            var cls = mock.Create<MyDictionary>();
            var expected = dic;
            var actual = cls.GetDictionary();

            Assert.True(actual != null);
            Assert.Equal(expected, actual);

        }
    }

 Dictionary<string, string> dic = new Dictionary<string, string>
    {
        { "Key1",   "Value1" },
        {"Key2",    "Value2" }
    };

Это нормально? (Тест работает отлично) Есть ли другой модульный тест, который я должен написать против этого простого метода? Тестирование на исключения, например? Если так, то как мне это сделать? Заранее спасибо!

...