Cucumber로 SpecInfra의 Backend를 사용해 보도록 하겠습니다.

8210 단어 Cucumberspecinfra
이 기사는 최종 갱신을 시작한 지 1년이 넘었다.조심해.
샘플 코드 여기 있습니다.
스펙인fra 사용법에 대해서도 이쪽으로 오세요.specinfra를 사용해 보세요. - Qita.
먼저 Env
단계에서 spcinfra.backend를 쉽게 사용하기 위해 모듈화는 World 읽기로 변경되었습니다.
features/support/env.rb
require 'specinfra'
require 'net/ssh'

module InfraHelper
  include SpecInfra::Helper::DetectOS
  include SpecInfra::Helper::Ssh

  def default_backend(host, user = 'root', ssh_opts = {})
    SpecInfra.configuration.ssh = Net::SSH.start(host, user, ssh_opts)
  end
end

World(InfraHelper)
Giithub의 샘플 코드에는 Given에서 지정된 대상 호스트를 위해 제작된#return_backend도 남아 있다.
그다음에 베포.
어쨌든 대상은 1대와 그대로 코드를 공개하기 위해 베포에서 백엔드 설정을 시도했다.
features/support/hooks.rb
Before do
  default_backend(ENV['CUCUMBER_REMOTE_HOST'])
end
여러 개라면 백그라운드에 배열해서 대상을 변경하면서 두드릴 수 있는데 여러 가지 방법이 있다고 생각해요.
프로젝트로 이동
샘플 시나리오 1
그러면 샘플의 하나인 OS 시리즈SmartOS를 확인하는 시나리오를 조금 통용되는 스텝으로 제작한다.
features/_get_os_family.feature
Feature: Get OS Family

  Scenario: Success Login
    When I ask to backend with "check_os"
    Then I will found "SmartOS" from backend at "family"
단계 1
산열이 되돌아오는 방법에 대해 임의의 키의 내용을 확인하십시오.
features/step_definitions/ask_with_step.rb
When(/^I ask to backend with "(.*)"$/) do |method|
  @result = backend.send(method.to_sym)
end

Then(/^I will found "(.*)" from backend at "(.*)"$/) do |exp, key|
  raise unless @result[key.to_sym] == exp
end
끼워 넣은 열쇠와 모델도 맞아야 한다면 공을 들이는 절차가 필요하다.
샘플 시나리오 2
특정 버전의 패키지가 설치되어 있는지 확인합니다.
여기specinfra를 치기로 한 check_installed가 아니라 대본 대강으로 요약하고 기술해 봤다.
features/check_package.feature
Feature: Check package

  Scenario Outline: Detect package
    Given I check package "<package>" installed with "<version>"

    Scenarios: Installed
      | package  | version   |
      | openssl  | 1.0.1fnb1 |
      | nginx    | 1.5.7     |
      | gmake    | 4.0       |
      | gcc47    | 4.7.3nb1  |
      | autoconf | 2.69nb3   |
단계 2specinfra 불열전으로 돌려보내기 때문에 한 줄로 가면 됩니다.
features/step_definitions/check_by_step.rb
When(/^I check package "(.*)" installed with "(.*)"$/) do |pkg, version|
  raise unless backend.check_installed(pkg, version)
end
절차가 끝났고 다른 운영체제에서 사용할 수 있어 도움이 된다.
결과를 발표하다
환경 변수CUCUMBER_REMOTE_HOST를 cucumber로 설정합니다.
cucumber-result
$ cucumber 
Feature: Get OS Family

  Scenario: Success Login                                # features/_get_os_family.feature:3
    When I ask to backend with "check_os"                # features/step_definitions/ask_with_step.rb:1
    Then I will found "SmartOS" from backend at "family" # features/step_definitions/ask_with_step.rb:5

Feature: Check package

  Scenario Outline: Detect package                               # features/check_package.feature:3
    Given I check package "<package>" installed with "<version>" # features/step_definitions/check_by_step.rb:1

    Scenarios: Installed
      | package  | version   |
      | openssl  | 1.0.1fnb1 |
      | nginx    | 1.5.7     |
      | gmake    | 4.0       |
      | gcc47    | 4.7.3nb1  |
      | autoconf | 2.69nb3   |

6 scenarios (6 passed)
7 steps (7 passed)
0m14.372s
스트라이크 그린.

좋은 웹페이지 즐겨찾기