2016-11-15 11 views
1

내가 MSUnit 테스트 프레임 워크를 사용하여 개인 방법 이제반환 형식이 Void 인 개인 메서드의 어설트 단계를 수행하는 방법?

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

와 클래스가, 지금까지

[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 
} 

무엇 어설 것

작성한 ???? 그것이 무효이므로, 어설 션을 작성하려면 어떻게해야합니까?

도움말

필요

답변

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; 
    } 
}