1

我想对被测方法调用具有正确参数的存根对象和方法进行单元测试。问题是其中一个参数是动态的(ExpandoObject)。如果“数据”(下面的变量)是一个类型化的对象,它会按预期工作。

    ...
    [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”我正在测试正确的参数是否被传入。

TIA

4

1 回答 1

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);
于 2013-05-11T04:49:33.040 回答