著者:しょっさん
前回、ページ数が増えたことに増長して、ソースコードをたくさん載せたはいいのですが、それを説明する余白がありませんでした。今回は、前回掲載したソースコードについて、新しく使いはじめた部分を中心に説明します。
その前に、連載を通じて少しずつではありますが、プログラムが拡張してきましたので、プログラム全体がどのような構成になっているかを、一度立ち返って見直してみます。ある程度の開発規模になってくると、設計図なく開発をすることは困難になってきます。今後のさらなる拡張と改良もふまえて、設計図を作って開発を進めていきます。
記事本文掲載のシェルスクリプトマガジンvol.48は以下リンク先でご購入できます。
1 2 3 4 5 6 7 8 9 10 |
describe "#let" do let(:foo) { 1 + 1 } before { @foo = 1 + 1 } it "testing let" do expect(foo).to be 2 end it "testing before" do expect(@foo).to be 2 end end |
1 2 3 4 5 6 |
let(:normal) { Reins::AuthService.new } let(:other) { Reins::AuthService.new(sha512) } context "正常に認証された場合" do it { expect(normal.authenticate_key('DEMO', '192.168.0.10')).not_to eq(false) } it { expect(other.authenticate_key('40ruby', '192.168.0.10')).not_to eq(false) } end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
describe '#read_hosts' do subject {regist_test.read_hosts } context '正常に登録されている場合' do it '未登録時に呼び出すと、空の配列' do is_expected.to eq([]) end it 'localhost を1つ登録すると、[127.0.0.1]' do regist_test.create(localhost, test_key) is_expected.to eq([localhost]) end it '複数のアドレスを登録した場合は、複数のアドレス' do correct_hosts.each { |host|regist_test.create(host, test_key) } is_expected.to match_array(correct_hosts) end end context '不正なIPアドレスの場合' do it '有効範囲外のIPアドレスを登録しても登録されず、空の配列' do incorrect_hosts.each { |host|regist_test.create(host, test_key) } is_expected.to match_array([]) end end end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
describe 'TaskControl' do before { @server = TCPServer.new(24368) } after { @server.close } let(:tasks) { Reins::TaskControl.new } describe '#connect' do context 'クライアントへ接続できる場合' do subject { tasks.connect } it 'モックを使って正常接続のコール' do allow(tasks).to receive(:connect).and_return(true) is_expected.to eq(true) end end context 'クライアントへ接続できない場合' do it '接続先が存在しないと Standard Error' do # TODO: 実際は Raise ではなく、成否を True/False でもらうこととする expect{ Reins::TaskControl.new('localhost', 65000) }.to raise_error 'Not Connect' end it 'クライアントが停止していたら false' do allow(tasks).to receive(:connect).and_return(false) expect(tasks.connect).to eq(false) end end end |
1 2 3 |
it 'こちらから、クライアントとの接続を切断して、成功すると nil' do is_expected.to eq(nil) end |
1 |
it { is_expected.to eq(nil) } |
1 2 3 4 |
module "A" class "Composer" : class "Deployment" |
1 2 3 4 |
module "B" class "Composer" : class "Deployment" |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
module Reins class << self attr_accessor :logger, :auth_service, :regist_host def configure yield self end end end Reins.configure do |config| config.logger = Logger.new(ENV['REINS_LOGGER'] || "/tmp/reins.log") config.auth_service = Reins::AuthService.new(ENV['REINS_KEY'] || "106a6484291b9778c224731501d2deeb71f2b83558a0e9784fe33646f56182f69de448e92fe83fd4e57d629987f9d0dd79bf1cbca4e83b996e272ba44faa6adb") config.regist_host = Reins::HostRegistry.new(ENV['REINS_DATABASE'] || "./40ruby.csv") end |