I figure out. The thread does not go to the "*expect*" statement because of 
the Ruby script terminates with the "*exit*" statement. 
So, I reverted PR, and now in the “*master*” branch is the implementation 
of my loop, and in the “*dev*” branch is the implementation with the “*exit*” 
operator.

My loop implementation works well, but “*expect (current_subject) .to 
receive (: create)*” runs the “create” method *in addition to the loop* and 
it hangs up the test.
If you comment out the “*expect*” statement, the test completes *correctly*.
I mean going through all the expected methods that I checked by their 
messages and state values, that is, I see changes of all expected states:
:*greeting* -> :*choose_base_option* -> :*create* -> :*exit*

 And if you change the name of the called method from "*create*" to "*load*" 
(which will not be called), the test will *fail*, *as expected*.
If you add "once / twice"  to the “expect” expression, for example, 
“*expect(current_subject).to 
receive(:create).once / twice* ”, this will raise an *expectation error*: 

(#<Console:0x0000563bfc2f7f90 @state=:create>).create(no args)
           expected: 1 time with any arguments
           received: 2 times
and
(#<Console:0x00005570a26aedf8 @state=:create>).create(no args)
           expected: 2 times with any arguments
           received: 3 times
respectively
*branch master*

Thus, the issue is how to test the method being called without calling it 
from the expression "expect".

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/72eabe18-70be-4781-b2be-341b3e45c5b2%40googlegroups.com.

Reply via email to