Essayer de comprendre l'utilisation de verifySet etc ... mais à moins que je ne contourne une solution, je ne peux pas le faire fonctionner. Est-ce que quelqu'un peut clarifier comment je devrais utiliser VerifySet et Verify et VerifyGet sur une propriété? Je suis confus.Invocation Moq n'a pas été effectuée sur le simulacre
Répondre
Vous devez effectuer une action avant d'appeler vérifier. Le paradigme de test unitaire typique avec des objets fantaisie est:
// Arrange
// Act
// Assert
Alors ce qui suit est une mauvaise utilisation parce que vous manquez votre étape de loi:
public void Can_do_something()
{
// Arrange
var newProduct = new Mock<IProduct>();
newProduct.SetupGet(p => p.Name).Returns("Jo");
// Act - doesn't exist!
// Your action against p.Name (ie method call), should occur here
// Assert
// This fails because p.Name has not had an action performed against it
newProduct.VerifySet(p => p.Name, Times.AtLeastOnce());
}
Et cela est exact, car il existe loi:
public void Can_do_something()
{
// Arrange
var newProduct = new Mock<IProduct>();
newProduct.SetupGet(p => p.Name).Returns("Jo");
// Act
LoadProduct(newProduct.Object);
// Assert
newProduct.VerifySet(p => p.Name, Times.AtLeastOnce());
}
public static void LoadProduct(IProduct product)
{
product.Name = "Jo";
}
test du modèle suit un modèle différent que les tests non-Mock connu sous le nom Comportement de vérification - c'est un answer J'ai fait cela clarifiera un peu plus le concept.
Arranger:
Demandez des objets simulacres ce qui va se passer lors de l'essai. Dites-lui quels événements vont se déclencher, quelles méthodes et propriétés seront utilisées, et que faire quand ces choses arriveront.
Loi:
exercice le code en cours de test.
Assertion:
Demandez aux objets fantaisie si ce que vous leur avez dit d'attendre réellement passé. Inspectez également votre code pour voir si cela a fonctionné comme prévu.
Votre problème est que vous avez arrangé, puis affirmé sans agir entre. La série de méthodes Verify affirme que ce que vous avez dit se produirait dans les méthodes d'installation.
Vous utilisez VerifySet() de la manière correcte, vous avez juste omis la scène // loi du
typique//Arrange
//Act
//Assert
construction d'essai. Comme vous l'avez suggéré, l'insertion
newProduct.Object.Name = "Jo";
dans votre étape // Act résout le problème. VerifyGet() sera utilisé exactement de la même manière, par exemple,
NewProduct.Verify() est utilisé pour vérifier toute action spécifiée, par ex.
//Arrange
var newProduct = new Mock<IProduct>();
newProduct.SetupGet(p => p.Id).Returns(1);
newProduct.SetupGet(p => p.Name).Returns("Jo");
//Act
newProduct.Object.SomeMethodYouDefineOnTheProductObject();
//Assert
newProduct.Verify(p => p.SomeMethodYouDefineOnTheProductObject(), Times.AtLeastOnce());
Merci les gars Malheureusement, je suis nouveau à tout cela et essayer d'apprendre rapidement.En particulier, la terminologie « acte » « organiser » etc
Alors même si je ne comprenais pas ce que je faisais, je l'ai fait correctement comme
newProduct.Object.Name = « Jo »;
était en train d'établir un acte.
gars explication fantastique merci beaucoup
Une dernière chose que je pensais que ce serait « mis en place et agir », mais ce n'est pas le cas correct est-il? connaissez-vous le diff aussi bien entre les deux SetupProperty et SetupSet/Get
mock.SetupProperty (f => f.Nom, "foo");
mock.SetupSet (foo => foo.Surname = "foo");
- 1. Comment vérifier qu'une autre méthode de la classe a été appelée à l'aide de Moq
- 2. L'attente sur Mock Object ne semble pas être satisfaite (Moq)
- 3. Problème de simulacre SimpleTest
- 4. Moq SetupProperty ne fonctionne pas
- 5. Moq question multi-interfaces
- 6. moq - comment vérifier que la méthode n'a pas été appelée si la classe avale les exceptions
- 7. Utilisation de MOQ pour tester le contrôleur
- 8. Erreur de configuration - Une exception a été lancée par la cible d'une invocation
- 9. Exception de lancement NUnit + Moq
- 10. Liens hypertexte ListBox - Invocation ICommands
- 11. Javascript - invocation d'événements par programmation
- 12. Mocking the CAL EventAggregator avec Moq
- 13. Quelles sont les capacités de Moq et Rhino.mocks?
- 14. En utilisant Moq, comment vérifier toutes les propriétés d'un objet ont été copiées?
- 15. Où la localisation est-elle effectuée dans le code Eclipse?
- 16. L'URL demandée/n'a pas été trouvée sur ce serveur
- 17. MockEJB - JUnit Mockito - ne peut pas relier un simulacre d'EJB au deuxième test unitaire
- 18. Validation de formulaire: une vérification multiple effectuée sur le même script donne une erreur
- 19. Où est la documentation MOQ?
- 20. pthread n'a pas été trouvé
- 21. Flex: Le sélecteur de type CSS n'a pas été traité car le type n'a pas été utilisé dans l'application.
- 22. Moq custom IIdentity
- 23. HttpURLConnection.getResponseCode() renvoie -1 à la deuxième invocation
- 24. WCF - "CommunicationException n'a pas été gérée par le code utilisateur"
- 25. Pourquoi ma vérification Moq IEventAggregator échoue-t-elle?
- 26. Moq avec l'argument Action
- 27. P/Invocation de structures CryptImportKey et marshaling
- 28. invocation acteur multiple de blocage des appels
- 29. SQL Express 2008 La validation de LINQ to SQL n'est-elle pas effectuée en séquence?
- 30. Mocking Méthodes VB.NET avec Moq