1

我在 rspec 中有一个请求测试,用于测试来自端点的几个潜在重定向,例如:

get registrations_path
expect(response).to redirect_to(new_registration_path)

在一种情况下,我希望它不会重定向。有没有办法否定匹配器redirect_to?还是一个明确断言的匹配器not_redirect

我尝试了诸如此类的变体,但没有成功:

expect(response).not_to redirect_to(nil)
expect(response).not_to redirect
expect(response).to not_redirect

我确实有其他测试来测试非重定向响应的细节……但我希望这个高级测试能够充实一套重定​​向测试。

4

1 回答 1

1

这不像.to not_redirect,但至少简洁明了,易于理解:

it { expect(response).not_to have_http_status(:redirect) }

当测试失败时,它会给出一个有用的响应:

 1. Failure/Error: expect(response).not_to have_http_status(:redirect)
        expected the response not to have a redirect status code (3xx) but it was 302
于 2020-11-20T20:22:02.247 回答