2009-03-24 2 views
13

Я продолжаю видеть, что это упоминается в DotNetKicks и т. Д. ... Но не может точно узнать, что это (на английском) или что он делает? Я глуп, поэтому, если бы вы могли объяснить это просто, это было бы здорово и почему я буду использовать его (если это то, что я использую) ???Что такое Moq?

Благодаря

ответ

20

Moq является основой насмешливый для C# /. NET. Он используется в модульном тестировании, чтобы изолировать тестируемый класс от его зависимостей и гарантировать, что вызываются соответствующие методы для зависимых объектов. Для получения дополнительной информации о насмешливости вы можете посмотреть статью в Википедии по адресу Mock Objects.

Другие издевательские рамки (для .NET) включают TypeMock, RhinoMocks, nMock, .etc.

+0

Отличное спасибо ... Думаю, мне нужно еще раз прочитать об модульном тестировании - Оцените спасибо – leen3o

+4

MOQ также является термином, используемым в торговом бизнесе = «Количество минимального заказа»: продукт стоимостью 100 долларов США по заказу количество 5000 шт. может составлять всего 20 долларов США, если вы купите миллион единиц. Это не связано с компьютерной наукой, которую я знаю! :) –

+0

Вернее, это изоляционная структура, так как не все подделки - издевательства. – StuperUser

3

Moq - это насмешливый движок для выполнения .Net TDD.

4

В простом английском языке, Moq это библиотека, которая, когда вы включаете в свой проект даст вам право делать Модульное тестирование в легкой манера. Почему? Потому что одна функция может вызвать другую, затем другую и так далее. Но в реальном, что необходимо, просто возвращаемое значение от первого вызова, чтобы перейти к следующей строке. Moq помогает игнорировать фактический вызов этого метода, и вместо этого вы возвращаете возвращаемую функцию. и убедитесь, что после того, как все строки кода выполнены, то, что вы хотели, это то, что вы получаете или нет. Слишком много английский, так вот пример:

String Somethod() 
{ 
    IHelper help = new IHelper(); 
    String first = help.firstcall(); 
    String second= secondcall(first); 
    return second; 
} 

Теперь здесь first необходимо, чтобы для secondcall(), но вы не можете на самом деле назвать help.firstcall() как это в какой-то другой слой. Так Mocking делается, притворяется, что метод был назван:

[TestMethod] 
public void SomeMethod_TestSecond 
{ 
    mockedIHelper.Setup(x=>x.firstcall()).Returns("Whatever i want"); 
} 

Здесь, думаю, SetUP, как притворяется вызов метода, мы просто заинтересованы в Returns.