Надеюсь, кто-то может мне помочь.Проблемы с ключевым словом Ref в MOQ
Я пытаюсь проверить метод (внешний метод), который имеет в качестве зависимости класс, вызывающий другой метод (Внутренний метод). Этот внутренний метод принимает логическое значение как параметр Ref, и моя проблема в том, что я до сих пор не смог контролировать этот параметр Boolean Ref.
(Примечание. Код, показанный ниже, был написан с целью иллюстрации проблемы и не похож на код).
Документация MOQ отсюда - https://github.com/Moq/moq4/wiki/Quickstart дает обзор работы с Ref/Out parms, но я не нашел его полезным.
Я попробовал пример, который работает (который я нашел здесь - Assigning out/ref parameters in Moq)
public interface IService
{
void DoSomething(out string a);
}
[Test]
public void Test()
{
var service = new Mock<IService>();
var expectedValue = "value";
service.Setup(s => s.DoSomething(out expectedValue));
string actualValue;
service.Object.DoSomething(out actualValue);
Assert.AreEqual(actualValue, expectedValue);
}
Но когда я попытался код, который я на самом деле хочу бежать я не могу заставить его работать. Это включено ниже.
Интерфейс
Public Interface IGetValue
Function GetValue(ByRef myBoolOfInterest As Boolean) As Single
End Interface
код Я хочу проверить
Public Class ClassToBeTested
Dim isProblem As Boolean
Public Function PassComparisonValues(m_GetValueGetter As IGetValue) As Boolean
Dim dPBar As Single = m_GetValueGetter.GetValue(isProblem)
Return isProblem
End Function
End Class
код, который я написал, чтобы проверить это ниже (примечание - это другой проект).
public void MethodToTest()
{
// Arrange
// System Under Test
ClassToBeTested myClassToBeTested = new ClassToBeTested();
// Construct required Mock
Mock<IGetValue> myMock = new Mock<IGetValue>();
bool isProblem = true;
myMock.Setup(t => t.GetValue(ref isProblem));
// Act
isProblem = myClassToBeTested.PassComparisonValues(myMock.Object);
// Assert
Assert.That(isProblem, Is.EqualTo(true));
}
То, что я хочу, чтобы иметь возможность контролировать содержание isProblem в ClassToBeTested, и я нахожу, что это не происходит. Он содержит ложь независимо от того, что я делаю.
Надеюсь, кто-то может помочь.
Я бы попросил автора библиотеки. – Max