Помогите с синтаксисом Moles для тестирования приватного метода с обобщениями - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть подпись для метода, который выглядит следующим образом: private IEnumerable BuildCustomerUpdatePlan (список localCacheChangedCustomers, список crmChangedCustomers) {}

Когда я смотрю на смоделированный объект, синтаксис (IntelliSense) того, как вызывать метод и проверять его, абсолютно сбивает меня с толку, и каждый раз, когда я его проверяю, я получаю ошибки компиляции. Я просмотрел основные учебные пособия, представленные на сайте MSFT, но я просто не понимаю, как протестировать закрытый метод с использованием Moles или как работать с типом возвращаемого значения и несколькими параметрами.

К сожалению, я не смог найти других хороших HOWTO или потоков, демонстрирующих более сложный пример, чем просто работа с простым методом Add (), который выплевывает INT и принимает INT. (

Советы

1 Ответ

0 голосов
/ 08 сентября 2011

В своем проекте тестирования сначала убедитесь, что вы добавили сборку Moles, соответствующую тестируемой сборке. Вы также захотите добавить оператор using тестируемой сборки с добавлением .Moles, чтобы вы могли использовать смоделированную сборку.

Родинки изменяют имена классов и методов на форму M[Original Class Name].[Original Method Name][typeof param1][typeof param2].... В вашем случае обход этого метода может выглядеть как MClass.BuildCustomerUpdatePlanListList = (List x, List y) => { [code]};. Это определяет анонимный метод, который принимает два List в качестве параметров, и вы добавляете в функцию любой код, который хотите. Просто убедитесь, что вы возвращаете IEnumerable в этом анонимном методе.

Вот пример использования родинок для обхода Directory.GetFiles:

using System.IO.Moles;
[assembly: MoledType(typeof(System.IO.Directory))]
...
    MDirectory.GetFilesStringString = (string x, string y) => new string[0];

Поскольку класс Directory является членом System.IO, я использую using System.IO.Moles;, чтобы указать, что я хочу использовать смоделированные элементы сборки.

Для родинок необходимо указать типы Moled: [assembly: MoledType(typeof(System.IO.Directory))] выполняет работу.

Наконец, Directory.GetFiles принимает две строки в качестве параметров и возвращает массив строк. Чтобы отклонить метод от возврата эквивалента не найденных файлов, метод moled просто возвращает new string[0]. Фигурные скобки необходимы, если вы хотите, чтобы в анонимном методе было несколько строк, и, если не использовать метод void, оператор return, соответствующий типу, который вернул бы оригинальный метод.

...