две должны в одном блоке rspec - PullRequest
1 голос
/ 13 июня 2011

Я пробую RSpec с небольшой игрой в крестики-нолики. пока у меня есть эта спецификация

require './tic_tac_toe'

describe TicTacToe do
  subject { TicTacToe.new }

  context "when starting a new game" do
    its(:grid) { should have(9).cells }
    its(:grid) { should be_empty }
  end
end

это работает просто отлично, но вывод выглядит так (сетка отображается два раза для одного теста каждый) Я бы хотел показать оба теста под одной сеткой.

TicTacToe
  when starting a new game
    grid
      should have 9 cells
    grid
      should be empty

могу я написать что-нибудь подобное?

its(:grid) { should have(9).cells and should be_empty }

или как то так?

its(:grid) { should have(9).cells and its(:cells) { should be_empty} }

спасибо!


EDIT:

I did what I want using this 
context "when starting a new game" do
    describe "grid" do
      subject { @game.grid }
      it "should have 9 empty cells" do
        should have(9).cells
        should be_empty
      end
    end
  end

Есть ли лучший способ сделать это, используя метод its ()?

Ответы [ 3 ]

1 голос
/ 13 июня 2011

its эквивалентно describe и it, поэтому я так не думаю.Вы могли бы явно написать это так:

describe TicTacToe do
  subject { TicTacToe.new.grid }

  context "when starting a new game" do
    describe "grid" do
      it { should have(9).cells}
      it { should be_empty}
    end
  end
end

Я немного смущен спецификацией, хотя он имеет 9 ячеек и также пуст?Так что я не уверен, что это именно то, что вы хотите, но результат будет:

TicTacToe
  when starting a new game
    grid
      should have 9 cells
      should be empty
0 голосов
/ 12 ноября 2013

Вы можете, но я рекомендую вам не делать этого, и вот почему:

В настоящее время это:

context "when starting a new game" do
  its(:grid) { should have(9).cells }
  its(:grid) { should be_empty }
end

проверит сетку с 9 ячейками и сообщит об этом.Затем он отдельно увидит, является ли сетка пустой.

Это правильно сообщит о таких условиях, как:

A grid with 9 elements that is empty with => true, true
A grid with 8 elements that is empty with => false,true
A grid with 9 elements that is not empty with => true, false
A grid with 8 elements that is not empty with => false, false

Однако, если вы сложите условия вместе, то для вышеупомянутого вы получитеодиночные возвраты, такие как

=> true
=> false
=> false
=> false

, которые не настолько информативны для ложных, что вы не сможете различить, какая часть является ложной.

0 голосов
/ 14 июня 2011

Это один из способов сделать то, что я хочу ... не используя его (), но это вывод, который я хочу.

context "when starting a new game" do
    describe "grid" do
      subject { @game.grid }
      it "should have 9 empty cells" do
        should have(9).cells
        should be_empty
      end
    end
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...