Я пытаюсь высмеять IDataRecord
используя Moq.Как насмехаться с IDataRecord?
Макет был создан следующим образом:
Mock<IDataRecord> mockDataRecord = new Mock<IDataRecord>();
Линия тестируемый:
DateTime timestamp = dataRecord.GetValueOrDefault<DateTime>("QUEUE_ADD_TS");
Пытались:
mockDataRecord.Setup(r => r.GetValueOrDefault<DateTime>("QUEUE_ADD_TS")).Returns(now);
... но он дает ошибку во время выполнения :
Expression references a method that does not belong to the mocked object: r => r.GetValueOrDefault("QUEUE_ADD_TS")
Также попытался заменить It.IsAny<String>()
вместо "QUEUE_ADD_TS"
, но это не имело значения. Это должно быть легко, но я почесываю голову - благодарю за любой совет!
Я не вижу '' GetValueOrDefault метода на 'интерфейса IDataRecord'. Разве это не метод расширения? –
Довольно уверен, что это так, как показывает ошибка. GetValueOrDefault - это метод расширения, поэтому его нельзя напрямую обрезать. Попробуйте вместо этого наложить указатель, я уверен, что примеры будут на SO где-то :) – gaz
А вы оба правы! Оказывается, «GetValueOrDefault» является методом расширения и является «статическим», поэтому его нелегко высмеять. Не уверен, как это работает, но изучая его ... –