Проверьте значение параметра ссылки с Moq

Это означает, что вычтите 1 из n и проверьте, больше ли результат, чем 1.

n-- в любой части кода эквивалентно n = n - 1, или `` n - = 1`, в этом цикле это обобщенный способ вычитания и оценки.

18
задан Andy 21 February 2012 в 16:35
поделиться

3 ответа

Я не могу предложить Вам, точное решение, но альтернатива состояло бы в том, чтобы скрыть pass-ref семантику позади адаптера, который берет параметр значением и вперед этим к RemotingHandler. Это было бы легче дразнить и удалит "касательно" бородавки от интерфейса (я всегда подозрителен к касательно параметров :-))

Править:

Или Вы могли использовать тупик вместо насмешки, например:

public class StubRemotingHandler : IRemotingHandler
{
    public CustomerContact savedContact;

    public void SaveCustomerContact(ref CustomerContact contact)
    {
        savedContact = contact;
    }
}

Можно теперь исследовать сохраненный объект в тесте:

IRemotingHandler remote = new StubRemotingHandler();
...
//pass the stub to your object-under-test
...
target.AddContact();
Assert.AreEqual(expected, remote.savedContact);

Вы также говорите в своем комментарии:

Я не хотел бы запустить прецедент обертывания случайных битов бэкенда, таким образом, я могу записать тесты более легко

Я думаю, что это - точно прецедент, который необходимо создать! Если Ваш код не является тестируемым, Вы собираетесь продолжать изо всех сил пытаться протестировать его. Помогите протестировать, и увеличить Ваше покрытие.

19
ответ дан 30 November 2019 в 07:18
поделиться

Последняя версия Moq поддерживает этот сценарий.

Взято из быстрого старта в http: // code.google.com/p/moq/wiki/QuickStart:

// ref arguments
var instance = new Bar();
// Only matches if the ref argument to the invocation is the same instance
mock.Setup(foo => foo.Submit(ref instance)).Returns(true);
10
ответ дан 30 November 2019 в 07:18
поделиться

К сожалению, я не уверен, что это возможно без прямой поддержки со стороны Moq. Проблема состоит в том, что Лямбда-выражения не поддерживают касательно или.

"Лямбда-выражение не может непосредственно получить касательно или параметр от метода вложения".

http://msdn.microsoft.com/en-us/library/bb397687.aspx

Я не могу даже заставить пример как Ваш работать. Добавлению касательно к установке не удается скомпилировать.

Вы могли бы хотеть проверить обсуждения Moq для большего количества http://groups.google.com/group/moqdisc

Удачи.

9
ответ дан 30 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: