2016-11-15 6 views
1

У меня есть класс с собственным методомКак сделать фазу Assert частного метода, тип возврата которого Void?

public class MyClass 
{ 
    private void SomeMethod(PrimaryAllocationDP packet) 
    { 
     ........................ 
     some code 
     ........................ 
     packet.AllocatedAgency = AgencyAllocated; 
    } 
} 

Теперь с помощью рамки MSUnit тестирования, я написал до сих пор

[TestMethod] 
public void TestAllocatedAgency() 
{ 

    var packet = new Fixture().Create<PrimaryAllocationDP>(); //used AutoFixture here 

    PrivateObject accessor = new PrivateObject(new MyClass());  

    accessor.Invoke("SomeMethod", packet); //Act 

    what will be the Assert???? Since it is void 
} 

, что будет Утверждай ???? Поскольку это недействительно, как я могу написать assert?

Помощь нужна

ответ

2

Ну, учитывая, что в данном примере метод испытуемый делает изменение своего аргумента/зависимость можно утверждать, что желаемый результат вызова функции является то, что AllocatedAgency свойство данного пакета фактически не null

[TestMethod] 
public void TestAllocatedAgency() { 
    //Arrange 
    var packet = new Fixture().Create<PrimaryAllocationDP>(); //used AutoFixture here 
    var sut = new MyClass(); 
    var accessor = new PrivateObject(sut);  

    //Act 
    accessor.Invoke("SomeMethod", packet); 

    //Assert 
    Assert.IsNotNull(packet.AllocatedAgency); 
} 
0

Если это возможно для вас, чтобы изменить PrimaryAllocationDP вы можете также добавить новый интерфейс IPrimaryAllocationDP и проверить настройку свойств. В моем тесте я предполагаю, что AllocatedAgency имеет тип объекта, и я использую Moq. Но, возможно, вы также можете использовать AutoFixture для насмешек? Чтобы сделать это более ясным, я установил AgencyAllocated непосредственно в MyClass

[TestFixture] 
public class DependencyInjection 
{ 
    [TestMethod] 
    public void TestAllocatedAgency() 
    { 
     var packet = new Mock<IPrimaryAllocationDP>(); 

     PrivateObject accessor = new PrivateObject(new MyClass()); 

     accessor.Invoke("SomeMethod", packet.Object); //Act 

     packet.VerifySet(p => p.AllocatedAgency = 42); 
    } 
} 

public interface IPrimaryAllocationDP 
{ 
    //object or any other type 
    object AllocatedAgency { set; } 
} 

public class PrimaryAllocationDP : IPrimaryAllocationDP 
{ 
    public object AllocatedAgency { set; private get; } 
} 

public class MyClass 
{ 
    private readonly object AgencyAllocated = 42; 

    private void SomeMethod(IPrimaryAllocationDP packet) 
    { 
     //........................ 
     //some code 
     //........................ 
     packet.AllocatedAgency = AgencyAllocated; 
    } 
} 
Смежные вопросы