为什么这个简单的minitest失败了?

时间:2017-02-19 15:50:28

标签: ruby-on-rails testing minitest

我是测试rails应用程序的新手,因为我通常只是进行手动测试......但是我这次尝试以正确的方式进行测试。

为什么这个基本测试失败了?

<title>Home Sign-In</title>

第一个断言是成功的但不是第二个断言。当我查看源代码时,标题似乎是正确的。

  fab=(FloatingActionButton)findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
}
    }

2 个答案:

答案 0 :(得分:2)

如果您在控制器方法中有重定向调用,则不会进行实际渲染。这就是为什么你不能使用assert_select

您可以尝试将测试用例分成两部分:

test "once you go to to app you are asked to sign in" do
  get "/"
  assert_redirected_to "/users/sign_in"
end

test "sign in page title is correct" do
  get "/users/sign_in"
  assert_select "title", "Home Sign-In"
end

答案 1 :(得分:0)

@Pavel是对的。 获取请求后检查响应的简单方法是 @ response.body 。 所以在你的情况下

test "once you go to to app you are asked to sign in" do
  get "/"
  assert_redirected_to "/users/sign_in"
  byebug #print @response.body here. At this point @response.body will
  # be "You are being redirected to /users/sign_in".
  assert_select "title", "Home Sign-In"
 end

因此您可以将其修改为 Pavel 建议

test "sign in page title is correct" do
  get "/users/sign_in"
  assert_select "title", "Home Sign-In"
end