Для «out» для меня кажется, что работает следующее.
public interface IService
{
void DoSomething(out string a);
}
[TestMethod]
public void Test()
{
var service = new Mock();
var expectedValue = "value";
service.Setup(s => s.DoSomething(out expectedValue));
string actualValue;
service.Object.DoSomething(out actualValue);
Assert.AreEqual(actualValue, expectedValue);
}
Я предполагаю, что Moq смотрит на значение «expectedValue», когда вы вызываете Setup и запоминаете его.
Для ref
я также ищу ответ.
Я нашел следующее руководство по QuickStart полезным: https://github.com/Moq/moq4/wiki / Quickstart
3 варианта:
Ваш скрипт не работает с введенным вами вводом (если вы на самом деле добавляете отсутствующий аргумент), потому что '{\"change_request\":\"chg0123456\"}'
это не то, что JS может анализировать как строку JSON. Кроме того, вы не передаете в скрипт никаких пустых значений из своего ввода (просто пустое пространство не считается фактическим вводом).
Вам нужно изменить его на '{"change_request":"chg0123456"}'
и передать пустое значение в виде пустой строки ''
.
Этот вход работает правильно.
node index.js DELETE https://Test1234.execute-api.us-west-2.amazonaws.com us-west-2 /qa/transit-connectivity/api/v1/sites/tdcloudtsttd03 AKIAJ4Y5DGqwewqeqw CFdAgsdtqweqwe/SKqDezdqweewofWrUXXBbQoMy '' '{"change_request":"chg0123456"}'
Если вам действительно нужен объект в этом формате, то вам нужно удалить из него \
символов, прежде чем вы сможете вызвать JSON.parse
для него.
awsAdditionalParams = JSON.parse(
process.argv[9].split('\\').join('') || '{}'
);
Если вы сначала хотите проверить, не является ли последний аргумент не пустым, и только затем запустить приведенный выше код, вы можете использовать троичный оператор, как этот.
awsAdditionalParams = process.argv[9]
? JSON.parse(process.argv[9].split('\\').join('') || '{}')
: '';