#testing #moq #using
#тестирование #moq #использование
Вопрос:
Кто-нибудь может сказать мне, как вернуть список данных, используя макет объекта, используя Moq framework и присвоив возвращаемый таким образом список данных другой переменной List<> .??
Комментарии:
1. Я использую макет объекта для вызова метода, который возвращает значения в форме List<> .
2. пожалуйста, добавьте несколько примеров кода. tinyurl.com/so-hints
Ответ №1:
public class SomeClass
{
public virtual List<int> GimmeSomeData()
{
throw new NotImplementedException();
}
}
[TestClass]
public class TestSomeClass
{
[TestMethod]
public void HowToMockAList()
{
var mock = new Mock<SomeClass>();
mock.Setup(m => m.GimmeSomeData()).Returns(() => new List<int> {1, 2, 3});
var resultList = mock.Object.GimmeSomeData();
CollectionAssert.AreEquivalent(new List<int>{1,2,3},resultList);
}
}
Ответ №2:
@Richard Banks дал правильный ответ. Для полноты картины, если вы хотите использовать функциональные спецификации Moq v4 и избавиться от .Объект:
void Main()
{
var list = new List<int> { 1, 2, 3 };
ISomeInterface implementation =
Mock.Of<ISomeInterface>(si => si.GimmeSomeData() == list);
List<int> resultList = implementation.GimmeSomeData();
foreach (int i in resultList)
{
Console.WriteLine(i);
}
}
public interface ISomeInterface
{
List<int> GimmeSomeData();
}