Исходный код вики NSubstitute

Версия 1.6 от Alexandr Fokin на 2026/03/17 15:34

Скрыть последних авторов
Alexandr Fokin 1.3 1 |(% style="width:131px" %) |(% style="width:1351px" %)(((
2 | |nsubstitute/NSubstitute
3 [[https:~~/~~/github.com/nsubstitute/NSubstitute>>https://github.com/nsubstitute/NSubstitute]]
4 | |
5 | |
6 )))
7 |(% style="width:131px" %)Преимущества|(% style="width:1351px" %)(((
8 |[[Moq>>doc:Разработка.NET.Библиотеки.Тестирование.Moq.WebHome]] для создания заглушки используется билдер, который формирует экземпляр. NSubstitute позволяет редактировать заглушку в любой момент (а не только в на этапе конфигурации), иногда это может быть удобно.|
Alexandr Fokin 1.4 9 |NSubstitute позволяет указывать тип заглушки не только через Generic, но и через [[Reflection ~~~| Рефлексия>>doc:Разработка.NET.C#.Рантайм и типы.Reflection | Рефлексия .WebHome]] указывая {{code language="c#"}}Type{{/code}} интерфейса.
Alexandr Fokin 1.3 10 Также есть возможность указать метод через {{code language="c#"}}MethodInfo{{/code}}.|
11 | |
12 )))
13 |(% style="width:131px" %)Сценарии|(% style="width:1351px" %)(((
Alexandr Fokin 1.6 14 |(% style="width:236px" %)Регистрация обработчиков|(% style="width:1096px" %){{code language="c#"}}var stub = Substitute.For<IService>();
15 // хендлер метода без возврата значения.
16 stub
17 .When(e => e.Action1(Arg.Any<string>()))
18 .Do(e => { });
19 // хендлер, возвращающий результат
20 stub.Action1(Arg.Any<string>())
21 .Returns(e => "test");{{/code}}
Alexandr Fokin 1.3 22 |(% style="width:236px" %)Создание заглушки по Type|(% style="width:1096px" %){{code language="c#"}}var stub = Substitude.For(typeof(IService), []);{{/code}}
Alexandr Fokin 1.6 23 |(% style="width:236px" %)Регистрация обработчика по MethodInfo|(% style="width:1096px" %)(((
Alexandr Fokin 1.3 24 Can NSubstitute mock the return of a MethodInfo?
25 [[https:~~/~~/stackoverflow.com/questions/41918308/can-nsubstitute-mock-the-return-of-a-methodinfo>>https://stackoverflow.com/questions/41918308/can-nsubstitute-mock-the-return-of-a-methodinfo]]
26
27 {{code language="c#"}}
28 var stub = Substitute.For<IService>();
29 var methodInfo = typeof(IService).GetMethod("Method1");
30 methodInfo.Invoke(stub, null).Returns((e) => "stub");
31
32 {{/code}}
33 )))
34 |(% style="width:236px" %) |(% style="width:1096px" %)
35 )))
36
37
38
Alexandr Fokin 1.2 39 ----
40
41 ==== Внутренние ссылки: ====
42
43 ====== Дочерние страницы: ======
44
45 {{children/}}
46
47 ====== Обратные ссылки: ======
48
49 {{velocity}}
50 #set ($links = $doc.getBacklinks())
51 #if ($links.size() > 0)
52 #foreach ($docname in $links)
53 #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument())
54 * [[$escapetool.xml($rdoc.fullName)]]
55 #end
56 #else
57 No back links for this page!
58 #end
59 {{/velocity}}
60
61 ----