我正在创建一个Ruby on Rails应用程序,并且我正在尝试运行涉及我的User模型的测试,以查看"记住我"功能是否有效.我使用Rails的内置cookies哈希来存储cookie,并使用session哈希来存储当前会话.我运行各种测试(集成,模型和控制器),我使用session变量,但由于某种原因,在这种特殊情况下,它不被识别.
NameError: undefined local variable or method `session' for #<UserTest:0x0000000658b5c8>
Run Code Online (Sandbox Code Playgroud)
错误发生在以下方法的else块中log_in_as:
test_helper.rb
...
def log_in_as(user, options = {})
password = options[:password] || 'password'
remember_me = options[:remember_me] || '1'
if integration_test?
post login_path, session: { email: user.email, password: password, remember_me: remember_me }
else
session[:user_id] = user.id
end
end
Run Code Online (Sandbox Code Playgroud)
我打电话给log_in_as我的用户测试; 这两个测试都失败了.
user_test.rb
require 'test_helper'
...
test "login with remembering" do
log_in_as(@user, remember_me: '1')
assert_not_nil cookies['remember_token']
end
test "login …Run Code Online (Sandbox Code Playgroud) 所以我目前正在编写一个 android 应用程序,它将使用 Twitter 的 1.1 Application-only-auth从特定用户获取推文,这需要一个 POST HTTP 请求来获取承载令牌。我设置了一个使用 anHttpsURLConnection来打开连接的方法,但是
conn.setDoOutput(true); 方法不起作用conn.doOutput 停留 falseGET。难道我做错了什么?
这个方法在 anAsyncTask的方法中调用doInBackground():
public String getRequestBearerToken(String endUrl) throws IOException {
String encodedCred = encodeKeys("API-key", "API-secret");
HttpsURLConnection connection = null;
try {
URL url = new URL(endUrl);
connection = (HttpsURLConnection) url.openConnection();
connection.setInstanceFollowRedirects(false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
// POST request properties
connection.setRequestProperty("Host", "api.twitter.com");
connection.setRequestProperty("User-Agent", getResources()
.getString(R.string.app_name));
connection.setRequestProperty("Authorization", "Basic "
+ encodedCred);
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=UTF-8");
connection.setRequestProperty("Content-Length", "29");
connection.setUseCaches(false);
...
Run Code Online (Sandbox Code Playgroud)