Возможно, это простой ответ, который связан с издевательством или заглушкой, но я новичок и пытаюсь лучше понять вещи ... Я пытаюсь понять, почему ресурсы тестирования на самом деле не deleted?
, но спецификации проходят так они были? Это может (или не может) быть уникальным для RSpec?!?
У меня есть новый проект, использующий RSpec и сгенерированный каркас для простого ресурса
$ rails new destroyer -T
...
$ rails generate rspec:install
...
$ rails g scaffold resource name:string
Все работает, как положено, и спецификации проходят. Но у меня произошли некоторые любопытные вещи, и тесты провалились в другом проекте, поэтому копаясь глубже, я добавил некоторые записи в свой метод уничтожения, чтобы посмотреть, что происходит:
#app/controllers/resources_controller.rb
def destroy
@resource = Resource.find(params[:id])
@resource.destroy
logger.info "Resource Destroyed: #{@resource.destroyed?}" # <-- added
logger.info "Persisted after destroy: #{@resource.persisted?}" # <-- added
respond_to do |format|
format.html { redirect_to(resources_url) }
format.xml { head :ok }
end
end
Когда я уничтожаю ресурс, я замечаю это (####) несоответствие в моих журналах:
development.log
Started POST "/resources/3" for 127.0.0.1 at 2011-02-16 12:28:25 -0800
Processing by ResourcesController#destroy as HTML
Parameters: {"authenticity_token"=>"87+THlPY2Ni7vQCONbeSqwfoeXI2fesc7DIj6EMSaw=", "id"=>"3"}
Resource Load (0.2ms) SELECT "resources".* FROM "resources" WHERE "resources"."id" = 3 LIMIT 1
AREL (0.5ms) DELETE FROM "resources" WHERE "resources"."id" = 3
Resource Destroyed: true # <<<< ###### TRUE ######
Persisted after destroy: false
Redirected to http://localhost:4002/resources
Completed 302 Found in 30ms
и после запуска спецификации я вижу это в test.log :
Processing by ResourcesController#destroy as HTML
Parameters: {"id"=>"1"}
Resource Destroyed: false # <<<< ###### FALSE ######
Persisted after destroy: false
Redirected to http://test.host/resources
Completed 302 Found in 4ms
Почему мы видим разные состояния (destroyed?
) ресурса в зависимости от среды, в которой мы работаем?