2016-11-15 250 views
1

我必須使用MSUnit測試框架有一個私有方法如何做返回類型爲Void的私有方法的Assert階段?

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進行嘲諷?爲了使它更清楚,我直接在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; 
    } 
} 
設置 AgencyAllocated