Lorsque j'utilise SetupAllProperties sur une maquette, il fonctionne comme prévu:Should Mock <SomeClassType> .SetupAllProperties() provoque des propriétés pour renvoyer les valeurs qui leur sont affectées?
/// <summary>
/// demos SetupAllProprties on an interface. This seems to work fine.
/// </summary>
[Test]
public void Demo_SetupAllProperties_forAnInterface()
{
var mock = new Mock<IAddress>();
mock.SetupAllProperties();
var stub = mock.Object;
stub.City = "blahsville";
var retrievedCity = stub.City;
Assert.AreEqual("blahsville", retrievedCity);
}
Cependant, quand je l'essayer sur une classe, il échoue:
/// <summary>
/// demos SetupAllProprties on a class. This seems to work fine for mocking interfaces, but not classes. :( The Get accessor returns null even after setting a property.
/// </summary>
[Test]
public void Demo_SetupAllProperties_forAClass()
{
var mock = new Mock<Address>();
mock.SetupAllProperties();
var stub = mock.Object;
stub.City = "blahsville";
var retrievedCity = stub.City;
Assert.AreEqual("blahsville", retrievedCity);
}
Est-ce que je fais quelque chose de mal? Est-ce que j'essaie de faire quelque chose qui n'est pas supporté par moq?
Pour faire bonne mesure, voici l'interface iAddress et la classe Adresse:
public interface IAddress
{
string City { get; set; }
string State { get; set; }
void SomeMethod(string arg1, string arg2);
string GetFormattedAddress();
}
public class Address : IAddress
{
#region IAddress Members
public virtual string City { get; set; }
public virtual string State { get; set; }
public virtual string GetFormattedAddress()
{
return City + ", " + State;
}
public virtual void SomeMethod(string arg1, string arg2)
{
// blah!
}
#endregion
}
J'utilise 3.1.0.0. Je vais vérifier la liste des problèmes, etc. – apollodude217
Cela doit être une différence de version. Passer à 4.1.10827 (le dernier disponible sur leur page de téléchargement pour le moment) efface le test. :) – apollodude217