我正在尝试使用Groovy HTTPBuilder编写集成测试,该测试将验证正文中返回的正确错误消息以及HTTP 409状态消息.但是,我无法弄清楚如何在失败的情况下实际访问HTTP响应的主体.
http.request(ENV_URL, Method.POST, ContentType.TEXT) {
uri.path = "/curate/${id}/submit"
contentType = ContentType.JSON
response.failure = { failresp_inner ->
failresp = failresp_inner
}
}
then:
assert failresp.status == 409
// I would like something like
//assert failresp.data == "expected error message"
Run Code Online (Sandbox Code Playgroud)
这是来自服务器的HTTP响应:
2013-11-13 18:17:58,726 DEBUG wire - << "HTTP/1.1 409 Conflict[\r][\n]"
2013-11-13 18:17:58,726 DEBUG wire - << "Date: Wed, 13 Nov 2013 23:17:58 GMT[\r][\n]"
2013-11-13 18:17:58,726 DEBUG wire - << "Content-Type: text/plain[\r][\n]"
2013-11-13 18:17:58,726 DEBUG wire - << "Transfer-Encoding: chunked[\r][\n]"
2013-11-13 …Run Code Online (Sandbox Code Playgroud) 假设我有:
/usr/lib/libsomething.so.1 在机器A上;/usr/lib/libsomething.so.2 在机器B.两台机器都有/usr/lib/libsomething.so符号链接到各自的库.
如果我使用链接gcc用-lsomething(甚至/usr/lib/libsomething.so),它会跟随符号链接,和ldd机器上的产生是这样的:
libsomething.so.1 => /usr/lib/libsomething.so.1
Run Code Online (Sandbox Code Playgroud)
这意味着它将无法在机器B上找到库.
现在我知道这些是主要的版本号更改,我知道它们可能不兼容,但我愿意冒这个风险.我想告诉链接器要查找libsomething.so,不要按照符号链接ldd显示
libsomething.so => /usr/lib/libsomething.so.1
Run Code Online (Sandbox Code Playgroud)
在A但是
libsomething.so => /usr/lib/libsomething.so.2
Run Code Online (Sandbox Code Playgroud)
在B.然后加载器将遵循符号链接到任何版本.
此外,我不希望延迟加载dlopen或任何东西.我希望它在编译时链接到共享对象.
这甚至可能吗?
我发现了Python的一个奇怪的角落,希望能对理解有所帮助。
假设我有一个B要附加的类作为class的方法A。我可以:
class A:
def __init__(self):
print("a self is %s " % self)
class B:
def __init__(self):
print("b self is %s " % self)
setattr(A, "B", B)
a = A()
a.B()
Run Code Online (Sandbox Code Playgroud)
当我调用时a.B(),在中B.__init__我获得了self一个新的B实例的对象。
现在假设我想a在B构造函数中捕获实例的实际值。我发现您可以使用包装函数来做到这一点:
class A:
def __init__(self):
print("a self is %s " % self)
class B:
def __init__(self, a_instance):
print("b self is %s a_instance is %s " % (self, a_instance))
def _(*args, **kwargs):
return B(*args, **kwargs) …Run Code Online (Sandbox Code Playgroud) 我是 Android 开发的新手,所以我想我有一个简单的问题,但我似乎无法弄清楚出了什么问题。
我基本上从样本中复制了 LunarLander 游戏示例,但我试图只复制制作小乒乓球或其他东西所需的部分。但出于某种原因, onKeyUp 和 onKeyDown 没有被调用。部分问题是我仍然不确定 Android 的调试方法是什么。
public class PongView extends SurfaceView implements SurfaceHolder.Callback{
...
/**
* Standard override for key up. Used to move the paddles
* @return
*/
@Override
public boolean onKeyUp(int keyCode, KeyEvent msg) {
return thread.doKeyUp(keyCode, msg);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent msg) {
return thread.doKeyDown(keyCode, msg);
}
...
}
Run Code Online (Sandbox Code Playgroud)
编辑解决方案:
我忘了把这一行放在我的视图的构造函数中。
setFocusable(true);
Run Code Online (Sandbox Code Playgroud)