Чтобы вернуть значение вместе с параметром ref ref, вот фрагмент кода:
public static class MoqExtensions
{
public static IReturnsResult<TMock> DelegateReturns<TMock, TReturn, T>(this IReturnsThrows<TMock, TReturn> mock, T func) where T : class
where TMock : class
{
mock.GetType().Assembly.GetType("Moq.MethodCallReturn`2").MakeGenericType(typeof(TMock), typeof(TReturn))
.InvokeMember("SetReturnDelegate", BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance, null, mock,
new[] { func });
return (IReturnsResult<TMock>)mock;
}
}
Затем объявите свой собственный делегат, соответствующий сигнатуре метода to-be-mocked, и предоставите свой собственный метод осуществление.
public delegate int MyMethodDelegate(int x, ref int y);
[TestMethod]
public void TestSomething()
{
//Arrange
var mock = new Mock<ISomeInterface>();
var y = 0;
mock.Setup(m => m.MyMethod(It.IsAny<int>(), ref y))
.DelegateReturns((MyMethodDelegate)((int x, ref int y)=>
{
y = 1;
return 2;
}));
}
Хорошо, после еще нескольких поисков, отвечая на мой собственный вопрос.
Нет способа сделать это. Несмотря на то, что эти напоминания являются функцией нескольких приложений, API для доступа к ним нет.
Для этого есть запрос функции .
Мой вопрос в основном дублирует вопросы: [1] [2] , я не нашел их, потому что они упоминали другие приложения, которые имеют те же напоминания с Календарем. [116 ]