Что я могу предоставить Moq для параметра делегата моего метода Generate ()? - PullRequest
1 голос
/ 20 марта 2012

У меня есть устаревшая система, которую я занимаюсь рефакторингом.

У меня есть объект по существу следующим образом:

public class SUT
{
  public delegate SaveStuff(SomeObject obj);
  public void Generate(SaveStuff saver)
  {
    // Do stuff
    var obj = new SomeObject();
    saver(obj);
  }
}

Я очень новичок в использовании Moq и хочу подсчитать, сколько раз вызывается "заставка".

Я видел несколько примеров здесь на SO, но тупик о том, как настроить тест

[Test]
public void TestDelegateCall()
{
  var sut = new SUT();
  // Prepare SUT's State...

  var callCount = 0;
  sut.Generate(??);
  Assert.AreEqual(callCount,2);
}

Что идет, где ?? это?

1 Ответ

3 голосов
/ 20 марта 2012

Я не знаю, что вам нужно использовать MOQ здесь, я думаю, что вы могли бы просто сделать следующее и воспользоваться анонимными методами и замыканиями:)

var callCount = 0
sut.Generate(obj=>callCount++);

Если это не сработает, тогда вы можетепросто используйте явную настройку делегата:

var callCount = 0
SaveStuff actionCounter = delegate(SomeObject obj)
    {
        callCount++;
    };
sut.Generate(actionCounter);
...