2013-05-09 38 views
1

我想單元測試一個被測方法使用正確的參數調用存根對象和方法。問題是其中一個參數是動態的(ExpandoObject)。如果「數據」(下面的變量)是一個類型對象,它按預期工作。使用ExpandoObject作爲參數的Rhino模擬存根方法

... 
    [Test] 
    public void MethodTest_WhenSomething_ExpectResult() 
    { 
     ... 
     dynamic data = new ExpandoObject(); 
     data.Id = param1; 
     data.Name = param2; 
     var myClass= MockRepository.GenerateStub<IMyClass>(); 
     myClass.Stub(x => x.MyMethod("hello", data).Returns(expectedResult); 
     ... 
     var actualResult = anotherClass.MethodUnderTest(param1, param2); 

     Assert.IsNotNull(actualResult); 
    } 

任何想法,我可以做到這一點?順便說一句,我不想​​「IgnoreArguments」我測試的是正確的PARAMS被傳遞英寸

TIA

回答

2

我想你需要定義返回expectedResult第二個參數具有正確的價值觀存根字段IdName

但現在你存根定義爲返回expectedResult第二個參數是一樣的data對象

如果是這樣,那麼你只需要修改Stub定義:

myClass 
    .Stub(x => x.MyMethod(
      Arg<string>.Is.Equal("hello"), 
      Arg<IDictionary<string, object>>.Matches(d => d["Id"].Equals(param1) && d["Name"].Equals(param2)) 
     )) 
    .Return(expectedResult); 
相關問題