2013-11-23 14 views
1

我有一個關於如何爲具有參數重寫的統一容器解析調用創建測試期望的問題。如何在容器中測試期望值。使用參數解析

這是我的函數:

protected override Response DecodeResponse(byte[] data) 
{ 
    Response response = base.container.Resolve<MyClass>(new ParameterOverrides 
    { 
     { "Code", GCommandCode.ClearAlarm }, 
     { "Error", 0 } 
    }); 

    return response; 
} 

這是我的單元測試:

// Arrange 
IUnityContainer container = MockRepository.GenerateStub<IUnityContainer>(); 

container.Expect(c => c.RegisterType<MyClass>()).Repeat.Once(); 
container.Expect(c => c.Resolve<MyClass>()).Repeat.Once().Return(preparedResponse); 

Mock mock = new Mock(container); 

// Act 
Response response = mock.DecodeResponse(new byte[] {}); 

// Assert 
container.VerifyAllExpectations(); 

我想創建一個測試期望測試構造函數的參數,因爲與實際測試的期望無論使用哪個參數都會傳遞,並且resolve調用返回空值。

回答

0

我猜你指的是「構造函數參數」是容器。並且你想驗證.Resolve與參數的期望。

您無法「驗證」IUnityContainer(如Resolve)的expectation on a static extension member

public static T Resolve<T>(this IUnityContainer container, 
          params ResolverOverride[] overrides); 

還有其他的方法可以做到這一點,例如,你可以抽象出來,以一個虛擬的方法,因此您可以指定期望。