Je veux tester un programme qui peut capturer et envoyer des paquets IP à certains clients, alors comment se moquer de la requête ou du client dans le concombre? merciComment se moquer d'une connexion TCP dans le concombre
Répondre
Normalement, je répondrais à la question avec le cavet que c'est une mauvaise idée, mais c'est une si mauvaise idée que je vais seulement répondre à la moitié, comment se moquer de générique de concombre.
Vous voyez que le concombre est censé être un test total de l'extérieur, il est donc destiné à exécuter complètement votre code sans aucun double de test. L'essentiel est que vous n'êtes pas un test unitaire mais que vous testez votre application entière.
« We recommend you exercise your whole stack when using Cucumber. [However] you can set up mocks with expectations in your Step Definitions. » - Aslak Hellesøy, Créateur de concombre
Attribuées vous peut faire cela, mais vous allez avoir besoin d'écrire vos propres classes tcpserver et TCPSocket pour éviter d'utiliser le réseau et qui peut effectivement présenter bugs depuis que vous écrivez des spécifications contre vos fausses classes Net pas les classes Net réelles. Encore une fois, pas une bonne idée.
Assez de jappements, voici comment utiliser des mock dans Concombre. (Je vais supposer que vous avez une compréhension de base de concombre et Ruby, donc je vais sauter quelques étapes comme la façon d'exiger vos fichiers de classe dans le concombre.)
Disons que vous avez les classes suivantes:
class Bar
def expensive_method
"expensive method called"
end
end
class Foo
# Note that if we don't send a bar it will default to the standard Bar class
# This is a standard pattern to allow test injection into your code.
def initialize(bar=Bar.new)
@bar = bar
puts "Foo.bar: #{@bar.inspect}"
end
def do_something
puts "Foo is doing something to bar"
@bar.expensive_method
end
end
vous devriez avoir le bar et les classes Foo requises dans votre dossier features/support/env.rb
mais pour permettre RSpec se moque de vous besoin d'ajouter la ligne suivante:
require 'cucumber/rspec/doubles'
créez maintenant un fichier de fonctionnalités comme celui-ci:
Feature: Do something
In order to get some value
As a stake holder
I want something done
Scenario: Do something
Given I am using Foo
When I do something
Then I should have an outcome
et ajoutez les étapes à votre étape fichier de définitions:
Given /^I am using Foo$/ do
# create a mock bar to avoid the expensive call
bar = double('bar')
bar.stub(:expensive_method).and_return('inexpensive mock method called')
@foo = Foo.new(bar)
end
When /^I do something$/ do
@outcome = @foo.do_something
# Debug display of the outcome
puts ""
puts "*" * 40
puts "\nMocked object call:"
puts @outcome
puts ""
puts "*" * 40
end
Then /^I should have an outcome$/ do
@outcome.should_not == nil
end
Maintenant lorsque vous exécutez votre fichier fonctionnalité vous devriez voir:
****************************************
Mocked object call:
inexpensive mock method called
****************************************
- 1. Se moquer d'une connexion TCP/IP avec C#
- 2. Mocha + concombre pour se moquer de la réponse nette
- 3. Comment se moquer getType() dans NMock
- 4. Comment se moquer de PreferenceManager dans Android?
- 5. Se moquer des mannequins?
- 6. Comment se moquer des méthodes statiques?
- 7. Comment se moquer d'un service RIA
- 8. Se moquer de plusieurs interfaces
- 9. Comment se moquer Controller.User en utilisant moq
- 10. Se moquer d'une API externe
- 11. Se moquer de l'opérateur est dans Moq
- 12. connexion TCP persistante dans Django
- 13. Se moquer des classes d'interface
- 14. connexion HTTP permanente vs connexion socket TCP
- 15. System.Net.WebRequest - Connexion TCP Resume/Cache?
- 16. Stratégies pour se moquer d'un webservice
- 17. Python: problèmes de se moquer d'une instance
- 18. jmock se moquer d'une méthode statique
- 19. Se moquer d'un contrat de service Wcf
- 20. Terminer la connexion tcp existante
- 21. Fermer une connexion TCP externe
- 22. Comment fermer une connexion TCP par port?
- 23. Se moquer récursivement avec Rhino-Mocks
- 24. Se moquer du serveur de développement GAE?
- 25. Simulation d'une connexion tcp dans Go
- 26. Bases de la connexion TCP
- 27. Forcer le protocole TCP/IP dans la chaîne de connexion
- 28. Fermeture d'une connexion TCP/client
- 29. Comment se moquer d'un référentiel générique en utilisant NUnit.Mocks?
- 30. Comment se moquer des méthodes d'extension avec Rhino Mock?