Как вернуть Tuple в макет? - PullRequest
       19

Как вернуть Tuple в макет?

2 голосов
/ 15 февраля 2012

У меня есть метод, подобный этому:

public virtual Tuple<int,int> GetQuantities(Entry entry, CartHelper cartHelper)
{
    //something to do
    return new Tuple<int, int>(minQuantity, maxQuantity);
}

, и для его модульного тестирования я пишу этот макет:

ProductMock
    .Setup(
        u => u.GetQuantities(It.IsAny<Entry>(), 
        It.IsAny<CartHelper>()))
    .Returns(new Tuple<int,int>(minQuantity, maxQuantity));

Но этот код не удалось скомпилировать с этой ошибкой:

Аргумент 1: невозможно преобразовать из 'System.Tuple<int,int>' в 'System.Tuple`2<int,int>'

System.Tuple`2 подсказывает мне об «анонимном типе» за кортежемкласс, но я не могу найти, что происходит за кулисами, и как решить эту проблему.

Редактировать

Извините, мой плохой, я только что обнаружил, что наш основной проект настроен на.NET 3.5, и он использует Tuple из пользовательской ссылки (System.ComponentModel.Composition), а тестовый проект использует .NET 4.0, и он использует класс TNET .NET.Я не знаю, как эта несовместимая версия пришла к нашему решению, но мне пришлось переключиться на другой обходной путь вместо использования Tuple.

1 Ответ

6 голосов
/ 15 февраля 2012
var tupletoReturn=Tuple.Create<int, int>(51, 57);

ProductMock.Setup(u => u.GetQuantities(It.IsAny<Entry>(), It.IsAny<CartHelper>())).Returns(tupletoReturn);

, если у меня работает

public class MyClass
    {
        public virtual Tuple<int, int> GetQuantities(Entry entry, CartHelper cartHelper)
        {

            return new Tuple<int, int>(0, 0);
        }
    }

    [TestFixture]
    public class Test
    {
        [Test]
        public void TestMethod()
        {
            var tupleToReturn = Tuple.Create<int, int>(10, 20);
            Mock<MyClass> p = new Mock<MyClass>();
            p.Setup(
           u => u.GetQuantities(It.IsAny<Entry>(),
                   It.IsAny<CartHelper>()))
                      .Returns(tupleToReturn);


        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...