2016-07-09 6 views
0

Я новичок в модульном тесте и я пытаюсь написать модульный тест для метода ниже моей службы:Repository не возвращают значение из моего метода испытаний

public InventoryViewModel GetInventory(DateTime startDate, DateTime endDate, long roomServiceId) 
{ 
    InventoryViewModel inv = new InventoryViewModel(); 
    var roomService = _unitOfWork.RoomServiceRepository.GetByID(roomServiceId); 
    if (roomService == null) 
     throw new InvalidOperationException("there is not the roomService"); 
     .... 
    } 
... 
} 

этот метод работает правильно, но когда я вызываю этот метод из моего TestMethod, RoomServiceRepository не возвращает roomService. Моя TestMethod выглядит следующим образом:

[TestClass] 
public class InventoryTest 
{ 
    private UnityContainer _container; 
    readonly MockObjectsSetup _mos = new MockObjectsSetup(); 
    private IInventoryService _inventoryService; 

    [TestInitialize] 
    public void SetupTest() 
    { 
     _container = new UnityContainer(); 
     _mos.Setup(_container); 
     Config.UnityTestConfig.RegisterTypes(_container); 
     _container.RegisterType<IInventoryService, InventoryService>(); 
     _inventoryService = (InventoryService)_container.Resolve(typeof(InventoryService)); 
    } 

    [TestMethod] 
    public void Dont_Change_NotSelected_PriceValues() 
    { 
     DateTime startDate = DateTime.Parse("6/21/2016"); 
     DateTime endDate = DateTime.Parse("6/22/2016"); 

     long roomServiceId = 17; 
     InventoryViewModel invViewModel = new InventoryViewModel(); 

     invViewModel.isUpdatingBoardPrice = invViewModel.isUpdatingPrice = invViewModel.isUpdatingFloatAvailability = true; 
     invViewModel.isUpdatingCertainAvailability = false; 
     invViewModel.StartDate = startDate; 
     invViewModel.EndDate = endDate; 
     invViewModel.RoomServiceId = roomServiceId; 
     invViewModel.CertainAvailability = 0; 
     invViewModel.FloatAvailability = 8; 

     var inv = _inventoryService.GetInventory(startDate, endDate, roomServiceId); 

     .... 
    } 
} 
+0

Вы издевались над своей 'inventoryService' и получаете ли вы какое-либо исключение? –

+0

Я не издевался над ним, как я сказал, я новичок, и я не знаю, как насмехаться над сервисом. –

ответ

0

вы должны прекратить полагаться на DI и МОК в тестах и ​​начать использовать издевается.

Что-то вроде RhinoMocks, например, но есть и другие рамки.

Идея состоит в том, что вы готовите свои услуги, вы издеваетесь над ними, чтобы возвращать данные, которые обычно поступают из базы данных, например, вы запускаете некоторые функции, вызываете метод, который хотите протестировать, и утверждаете, что происходит с результатом.

Фактически вы говорите, что вам все равно, откуда поступают данные, но для этого требуется контролируемый отклик, и именно это вы насмехаетесь. Вы только заботитесь о функциональности. Имеет ли это смысл?