Ich möchte überprüfen, ob eine Zeichenfolge auf einen bestimmten Wert in einem Moq-Objekt gesetzt wird.
Ich habe eine kleine Konsolenanwendung erstellt, um zu simulieren, was ich tun möchte.
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();
}
}
}
Also dachte ich, ich könnte einfach eine kleine Methode entwickeln
public static string PrepSqlForComparison(string sql)
{
Regex re = new Regex(@"\s+");
return re.Replace(sql, " ").Trim().ToLower();
}
Und Veränderung
mockMyInterface.VerifySet(i => i.MyValue = "hello world. Please ignore the whitespace");
zu
mockMyInterface.VerifySet(i => PrepSqlForComparison(i.MyValue) = "hello world. Please ignore the whitespace");
Das lässt sich jedoch nicht kompilieren, da der Operator in dem Ausdruck eine Zuweisung und kein Gleichheitszeichen ist.
Wenn ich es also nicht auf diese Weise machen kann, wie kann ich es dann überprüfen, ohne Groß- und Kleinschreibung, Leerzeichen und andere Formatierungen zu berücksichtigen?