لماذا هذا درابزون فشل اختبار وحدة التحكم؟
-
21-08-2019 - |
سؤال
وأنا أحاول أن أفهم لماذا هذا الاختبار هو الفشل. (انا من النوع الجديد للاختبار.) أنا باستخدام اختبار الإطار القضبان المدمج في مع إضافة جوهرة Shoulda.
والاختبار:
require 'shoulda'
context "on GET to :new" do
setup do
get(:new)
end
should_render_template :new
should_not_set_the_flash
end
وفشل:
1) Failure:
test: on GET to :new should render template :new. (SessionsControllerTest)
[/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/controller /macros.rb:220:in `__bind_1233882600_699194'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `call'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `test: on GET to :new should render template :new. '
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `__send__'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `run']:
expecting <"new"> but rendering with <"">
2 tests, 2 assertions, 1 failures, 0 errors
ولكن اذا كنت تشغيله على حدة مع app.get '/sessions/new'
أنه يعمل بشكل جيد مع أي خطأ.
وعلى "new
" قالب يجعل كما هو متوقع في المتصفح.
وأنا باستخدام Haml. ربما هذا ما يسبب مشكلة. يسمى القالب بلادي "new.html.haml
".
المحلول
والفشل يقول أنه لا يوجد قالب تم تقديمها. محاولة للتأكد من عدم إعادة توجيهك مع
should_respond_with :success
ووتأكيد محتويات @ response.body فقط لرؤية ما تم اعادتهم
# This will fail but should give you some clue about what was sent back.
should "sent something back in the body" do
assert_match 'boohooo', @response.body
end
ويمكنك أيضا التأكيد على قالب معين، حتى تتمكن من اعطائها رصاصة واحدة، وأيضا:
should_render_template "new.html.haml"
ولكن، أنا لا أظن HAML كونها سبب المشكلة.
نصائح أخرى
وكنت أعاني من مشكلة مماثلة مع Shoulda والتخليص، والقضبان 2.3.2. أعتقد أنني حل المشكلة عن طريق تعديل كيف shoulda والتخليص استخدام "assert_template. ويبدو أن هناك علة مفتوحة في القضبان المتعلقة بذلك.
ويرجى الاطلاع على هذا الموضوع لمزيد من المعلومات وبلدي فرق من التغييرات (تغيير سطر واحد في كل من التخليص وShoulda).
http://groups.google.com/group/shoulda/browse_thread / موضوع / 8c0a66c80ff4fd76