Rspe c 'Subject' и 'let` не запоминают значение из блока? - PullRequest
0 голосов
/ 02 мая 2020

Я узнал, что let и subject должны запоминать значение из блока, который они дали, и это будет ленивая оценка.

, но когда я запусту следующее выражение c:

    describe "::build_stacks" do
        subject(:board) do
            Board.new(4,4)
        end

        it "should accept a number of stacks as an arg" do
            p board.object_id
            expect { Board::build_stacks(7) }.to_not raise_error
        end

        it "should return a 2D array containing the given number of empty stacks (subarrays of length 0)" do
            stacks_1 = Board::build_stacks(7)
            p board.object_id

Я заметил, что напечатанные 2 object_ids отличаются. не должны ли они отличаться, так как :board будут запомнены?

1 Ответ

1 голос
/ 02 мая 2020

Ссылка здесь https://relishapp.com/rspec/rspec-core/docs/helper-methods/let-and-let

Значение из let будет кэшировано для нескольких вызовов в одном и том же примере, но не во всех.

Надеюсь, что это поможет .

...