Привет, я учусь писать тесты с помощью 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" }
};
Это нормально? (Тест работает отлично) Есть ли другой модульный тест, который я должен написать против этого простого метода? Тестирование на исключения, например? Если так, то как мне это сделать? Заранее спасибо!