У меня есть метод с именем ProcessPayment()
, который я разрабатываю через BDD и mspec.Мне нужна помощь с новым вызовом.Моя пользовательская история гласит:
Given a payment processing context,
When payment is processed with valid payment information,
Then it should return a successful gateway response code.
Чтобы настроить контекст, я отключаю службу шлюза с помощью Moq.
_mockGatewayService = Mock<IGatewayService>();
_mockGatewayService.Setup(x => x.Process(Moq.It.IsAny<PaymentInfo>()).Returns(100);
Вот спецификация:
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>());
}
Метод должен взять объект `PaymentProcessingRequest '(не домен obj), сопоставить этот объект obj с доменом и передать домен objк методу stubbed на службе шлюза.Ответ от службы шлюза - это то, что возвращается методом.Однако из-за того, как я заглушаю свой метод обслуживания шлюза, мне все равно, что ему передают.В результате, кажется, у меня нет возможности проверить, правильно ли метод сопоставляет объект запроса с объектом домена.
Когда я смогу поступить здесь и по-прежнему придерживаться BDD?