J'essaie d'écrire un test unitaire simple pour le service ServiceStack, je passe par des tests en ligne et quelques threads ici. C'est le fil principal qui a le plus de détails que j'essaie d'accomplir - Unit Test HTTPRequest Headers with ServiceStack.Tests unitaires pour les services ServiceStack
Cependant, je suis confronté à des problèmes d'injection d'objet IDbConnection dans le service. Dans la méthode web, un objet dictionnaire est rempli à l'aide de la méthode GetDictionary d'OrmLite. Mais je suis incapable de me moquer car GetDictionary est la méthode d'extension.
private Mock<IDbConnection> _dbConnectionMock;
private Dictionary<string, string> _nameValuePairs;
[SetUp]
public void SetUp()
{
_dbConnectionMock = new Mock<IDbConnection>();
_nameValuePairs = new Dictionary<string, string>()
{
{"name","test"},
{"Updatedby", "5/23/12 7:00:15 AM"},
{"Address", "212 Adam St."}
};
}
méthode d'essai
var service = new CustomerLookupService(_dbConnectionMock.Object);
var response = (HttpResult)service.Any(new CustomerLookup { name = "test" });
//assert statements
Si la méthode GetDictionary ne peut pas être moqué, je suis même prêt à appeler la méthode Web qui frappe DB, pour ce faire, je dois créer apphost.
Il fonctionne comme un charme. J'ai un doute, si nous avons plusieurs opérations de lecture qui récupèrent des dictionnaires dans la méthode, comment se moquer de ceux dans le test. Avons-nous besoin de mentionner les objets simulés dans le même ordre. – Sunny
Cette solution n'est probablement pas la meilleure si vous testez une méthode qui effectuera de nombreuses opérations de base de données et retournera le même type. Pourrait être en mesure d'atteindre des valeurs de retour de differnt en fonction de la «commande d'appel» en utilisant Rhino Mocks - http://stackoverflow.com/questions/5609589/ordering-method-return-values-with-rhino-mock-stubs – paaschpa
Merci pour le répondre.Connaissez-vous des idées alternatives pour plusieurs opérations de base de données. Le fait que j'aime cette méthode est que je n'ai pas besoin de créer des dépôts individuels en violant le principe DRY. – Sunny