Я хочу убедиться, что для строки задано определенное значение в объекте Moq.
Я создал небольшое консольное приложение для имитации того, что я хочу сделать.
using System;
using Moq;
namespace MoqVerifySet
{
public interface MyInterface
{
string MyValue { get; set; }
}
class Program
{
static void Main(string[] args)
{
Mock<MyInterface> mockMyInterface = new Mock<MyInterface>();
var myI = mockMyInterface.Object;
myI.MyValue = @"hello
world.
Please ignore
the whitespace";
try
{
mockMyInterface.VerifySet(i => i.MyValue = "hello world. Please ignore the whitespace");
Console.WriteLine("Success");
}
catch(Exception ex)
{
Console.WriteLine("Error : {0}", ex.Message);
}
Console.WriteLine("\n\nPress any key to exit...");
Console.ReadKey();
}
}
}
Итак, я подумал, что смогу создать маленький метод
public static string PrepSqlForComparison(string sql)
{
Regex re = new Regex(@"\s+");
return re.Replace(sql, " ").Trim().ToLower();
}
и изменить
mockMyInterface.VerifySet(i => i.MyValue = "hello world. Please ignore the whitespace");
до
mockMyInterface.VerifySet(i => PrepSqlForComparison(i.MyValue) = "hello world. Please ignore the whitespace");
Но это не компилируется, поскольку оператор в выражении является присваиванием, а не равенством.
Итак, если я не могу сделать это таким образом, как я могу проверить, игнорируя регистр, пробелы и другое форматирование?