Je souhaite vérifier qu'une chaîne est définie sur une valeur spécifique dans un objet Moq. J'ai créé une petite application console pour simuler ce que je veux faire.Comment puis-je ignorer l'espace blanc dans une expression Moq VerifySet()?
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();
}
}
}
Alors, je pensais que je pouvais créer une petite méthode
public static string PrepSqlForComparison(string sql)
{
Regex re = new Regex(@"\s+");
return re.Replace(sql, " ").Trim().ToLower();
}
Et changer
mockMyInterface.VerifySet(i => i.MyValue = "hello world. Please ignore the whitespace");
à
mockMyInterface.VerifySet(i => PrepSqlForComparison(i.MyValue) = "hello world. Please ignore the whitespace");
Mais cela ne compile pas depuis le opérateur dans l'expression est un âne ignement, pas un égal.
Donc, si je ne peux pas le faire de cette façon, comment puis-je vérifier tout en ignorant les cas, les espaces et autres formats?
Merci. C'est exactement ce que je cherchais. +1 –