2016-07-21 3 views
0

я использую NUnit и Moq Autofac для установки тестустановки MOQ не возвращает ожидаемое значение

[TestFixture] 
public class SomeTests 
{ 

    [OneTimeSetUp] 
    public void Initialize() 
    { 

    } 
    [Test] 
    public void SalaryCheck() 
    {        
     using (var mock = AutoMock.GetLoose()) 
     { 
      // Arrange 
      mock.Mock<ICommonServices>().Setup(x => x.AddTwoNumbers(1,2)).Returns(5); 
      var sut = mock.Create<SomeManager>(); 
      // Act 
      int actul = sut.CalculateSalary(1); 


      var expected = 5; 


      // Assert 
      Assert.AreEqual(expected, actul); 

     } 
    } 
} 

функция CalculateSalary выглядит как этот

public int CalculateSalary(int hours) 
    { 
     var addres = _commonService.AddTwoNumbers(5,3); 
     if (addres == 5) 
     { 
      return addres * hours; 
     } 
     else 
     { 
      return 100; 
     } 
    } 

я хочу функцию AddTwoNumbers, которая является внешней зависимости, чтобы возвращение 5 независимо от того, что. вот почему я настраиваю его, издеваясь над ним. Но когда я отлаживаю этот тест, похоже, что он входит в функцию зарплаты calsulate, но возвращает функцию «0» для AddTwoNumbers. который является своеобразным значением по умолчанию или нулевым значением.

это не возвращает мне 5, то есть я установил его для возвращения.

ответ

3

Вы должны использовать It.IsAny<int>() т.е.

mock.Mock<ICommonServices>().Setup(x => x.AddTwoNumbers(It.IsAny<int>(),It.IsAny<int>())).Returns(5); 
+0

Thats правильно плохо пометить его как ответ ом 3 мин –

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