J'ai une méthode appelée ProcessPayment()
que je développe via BDD et mspec. J'ai besoin d'aide pour un nouveau défi. Mon histoire d'utilisateur dit:Comment développer un objet d'entrée avec TDD/BDD?
Given a payment processing context,
When payment is processed with valid payment information,
Then it should return a successful gateway response code.
Pour mettre en place le contexte, je stubbing mon service de passerelle à l'aide Moq.
_mockGatewayService = Mock<IGatewayService>();
_mockGatewayService.Setup(x => x.Process(Moq.It.IsAny<PaymentInfo>()).Returns(100);
est ici la spécification:
public class when_payment_is_processed_with_valid_information {
static WebService _webService;
static int _responseCode;
static Mock<IGatewayService> _mockGatewayService;
static PaymentProcessingRequest _paymentProcessingRequest;
Establish a_payment_processing_context =() => {
_mockGatewayService = Mock<IGatewayService>();
_mockGatewayService
.Setup(x => x.Process(Moq.It.IsAny<PaymentInfo>())
.Returns(100);
_webService = new WebService(_mockGatewayService.Object);
_paymentProcessingRequest = new PaymentProcessingRequest();
};
Because payment_is_processed_with_valid_payment_information =() =>
_responseCode = _webService.ProcessPayment(_paymentProcessingRequest);
It should_return_a_successful_gateway_response_code =() =>
_responseCode.ShouldEqual(100);
It should_hit_the_gateway_to_process_the_payment =() =>
_mockGatewayService.Verify(x => x.Process(Moq.It.IsAny<PaymentInfo>());
}
La méthode doit prendre un objet `PaymentProcessingRequest » (pas dans le domaine de obj), carte qui obj à un domaine obj et passer le domaine obj à la méthode bouchonné sur le service de passerelle. La réponse du service de passerelle est ce qui est renvoyé par la méthode. Cependant, en raison de la façon dont je suis en train de céder ma méthode de service de passerelle, il ne se soucie pas de ce qui est passé dedans. Par conséquent, il semble que je n'ai aucun moyen de tester si la méthode mappe correctement l'objet de requête à l'objet de domaine.
Quand puis-je faire ici et toujours adhérer à BDD?