Как проверить аргументы метода после вызова метода?

Скажем, у меня есть метод A.Do(Arg arg), который присваивает некоторые свойства arg (класс Arg), скажем, устанавливает arg.Prop1 = "done". И я тестирую метод void B.Do(void):

public class B
{
  public void Do()
  {
    var arg = InitArg();
    A.Do(arg)
    ...
  }
}

и я издевался над классом A как над новым Mock‹ A>() с CodeBase=true. Итак, как мне проверить, что arg.Prop1 == "done"?


person David    schedule 19.12.2009    source источник


Ответы (3)


С приведенным примером вы не можете. arg является закрытым для метода B.Do(), поэтому он невидим для внешнего мира, поэтому вы не можете проверить ни одно из его свойств.

person Jeremy McGee    schedule 19.12.2009
comment
Спасибо. Хотя я не знаю, что находится внутри MoQ, он все же позволяет мне проверить, сколько раз вызывался A.Do. Поэтому мне было интересно, позволит ли это мне также проверить аргументы - но я думаю, что нет... жаль - person David; 19.12.2009

У вас должен быть модульный тест для класса A, который проверяет правильность манипулирования аргументом вашего прохода, а не пытается проверить это поведение через B.Do().

person Paolo    schedule 19.12.2009

В любом случае, кажется вполне разумным добавить такую ​​функциональность для MoQ для проверки аргументов после вызова метода. Потому что наличие функции, которая MoQ проверяет количество вызовов метода, логически ведет к функции проверки аргументов.

person David    schedule 19.12.2009