2015-08-05 2 views
1

У меня есть метод действия в мой контроллер, как показано нижеКак настроить метод в контроллер, используя малое количество заказа

public ActionResult Index() 
{ 
    var supplier = GetSupplierForUser(); 
    var model = SupplierService.GetOutstandingItems(supplier);   
    return View(model); 
} 

Я Настройка метода поставщика услуг в качестве

var supplierService = new Mock<ISupplierService>(); 
var supplier = new Supplier { Name = "Some Name",Id = 100}; 

supplierService.Setup(s => s.GetOutstandingItems(supplier)) 
          .Returns(outstandingSupplierItemInfo.Object); 

Я не знаю, как мы можем настроить метод Supplier GetSupplierForUser(), который присутствует в базовом контроллере, чтобы вернуть объект поставщика. От установки moq выше нулевого поставщика всегда передается SupplierService.GetOutstandingItems(supplier)

Любые идеи? спасибо

+0

Что такое 'outstandingSupplierItemInfo.Object'? И какова модель, возвращаемая функцией GetOutstandingItems()? –

+0

Использует ли 'Поставщик GetSupplierForUser()' метод 'SupplierService' для получения поставщика для пользователя? –

ответ

1

Может быть, вам нужно:

supplierService.Setup(s => s.GetOutstandingItems(It.IsAny<Supplier>())) 
    .Returns(outstandingSupplierItemInfo.Object); 

It.IsAny<> материал сделает ваш Setup матч любой поступивший объект (аргумент).

Поскольку вы используете свободный макет, если нет Setup соответствует аргументам, о которых идет речь, Moq просто вернет null. Вместо этого используйте MockBehavior.Strict.

Если вы не используете It.IsAny<>, Moq придется попробовать, чтобы увидеть, если поставщик, который передается Moq, «равно» supplier вы использовали, когда вы сделали Setup. Здесь может стать важным, что .Equals(...) семантика вашего типа (class или struct) Supplier имеет.

Если у вас нет соответствующих Equals семантику, но все еще хотите ограничить Setup к той или иной ситуации, попробуйте вместо этого:

supplierService 
    .Setup(s => s.GetOutstandingItems(It.Is((Supplier s) => s.Name == "Some Name" && s.Id == 100))) 
    .Returns(outstandingSupplierItemInfo.Object); 
+0

отлично - спасибо! – rumi

Смежные вопросы