У меня есть класс, который реализует специализированный буферный вид коллекции.Мне кажется, что метод Flush, например, не является модульно тестируемым.Если я, например, хотел бы проверить, что произойдет, если я добавлю данные, очистите их, добавьте данные еще раз, а затем сбросьте их еще раз, чтобы посмотреть, получу ли я только те данные, которые были добавлены после первой очистки.Чтобы я мог это сделать, мне также пришлось бы использовать метод Add.Является ли использование другого метода в тесте, который является частью тестируемого класса и должен быть проверен отдельно, плохой практикой?Является ли этот класс даже модульным для тестирования?Подобные вопросы всплывают, и я не могу на них ответить.Заранее спасибо!
public class DataBuffer : IDataBuffer
{
private Dictionary<string, List<Dictionary<string, object>>> buffer;
public DataBuffer()
{
buffer = new Dictionary<string, List<Dictionary<string, object>>>();
}
public void Add(string type, Dictionary<string, object> data)
{
if (!buffer.ContainsKey(type))
{
buffer[type] = new List<Dictionary<string, object>>();
}
buffer[type].Add(metrics);
}
public Dictionary<string, List<Dictionary<string, object>>> Flush()
{
var result = buffer;
buffer = new Dictionary<string, List<Dictionary<string, object>>>();
return result;
}
public int Count(string type) => buffer[type].Count;
}
В принципе, я хотел бы написать такой тестовый модуль.Это похоже на действительный?
[TestMethod]
public void Flush_NoDataIsGivenBackTwice()
{
var data1 = new Dictionary<string, object>
{
{ "key1", "value1" }
};
dataBuffer.Add("type", data1);
var result1 = dataBuffer.Flush();
Assert.AreEqual(1, result1["type"].Count);
Assert.AreSame(data1, result1["type"].First());
var data2 = new Dictionary<string, object>
{
{ "key2", "value2" }
};
dataBuffer.Add("type", data2);
var result2 = dataBuffer.Flush();
Assert.AreEqual(1, result2["type"].Count);
Assert.AreSame(data2, result2["type"].First());
}