我的问题与 该线程中显式使用LambdaMetafactory密切相关,提供了一些非常好的例子来使用LambdaMetafactory访问类的静态方法; 但是,我想知道访问现有bean实例的非静态字段的等效代码是什么.似乎很难找到一个例子,我所执行的每一次尝试都以非工作代码结束.
这是bean代码:
class SimpleBean {
private Object obj= "myCustomObject";
private static Object STATIC_OBJECT = "myCustomStaticObject";
public Object getObj() {
return obj;
}
public void setObj(final Object obj) {
this.obj = obj;
}
public static Object getStaticObj() {
return STATIC_OBJECT;
}
public static void setStaticObj(final Object obj) {
STATIC_OBJECT = obj;
}
}
Run Code Online (Sandbox Code Playgroud)
这里是一个成功访问静态方法"getStaticObj()"的工作单元测试:
@Test
public void accessStaticMethod() throws Throwable
{
MethodHandles.Lookup caller = MethodHandles.lookup();
Method reflected = SimpleBean.class.getDeclaredMethod("getStaticObj");
MethodHandle methodHandle = caller.unreflect(reflected);
CallSite site = LambdaMetafactory.metafactory(caller, …Run Code Online (Sandbox Code Playgroud) 如何单元测试一个动作是否被分派?
例如,在 LogoutService 中,我有这个简单的方法:
logout(username: string) {
store.dispatch([new ResetStateAction(), new LogoutAction(username)]);
}
Run Code Online (Sandbox Code Playgroud)
我需要编写一个单元测试来验证这两个操作是否已调度:
it('should dispatch ResetState and Logout actions', function () {
logoutService.logout();
// how to check the dispactched actions and their parameters?
// expect(...)
});
Run Code Online (Sandbox Code Playgroud)
我如何检查分派的动作?
我想使用 go 应用程序中的动态 C 库,我可以构建应用程序,但在运行时找不到该库。这是我的项目的结构:
src/ctest/
|- lib/
| |- libmylib.so
| |- libmylib.h
|- main.go
Run Code Online (Sandbox Code Playgroud)
在 main.go 中,我导入 .h 和 .so 文件:
/*
#cgo CFLAGS: -I./lib
#cgo LDFLAGS: -L./lib -lmylib
#include <mylib.h>
*/
import "C"
func main() {
C.testMyLib()
}
Run Code Online (Sandbox Code Playgroud)
我可以成功构建应用程序,但启动时会抛出此错误:
error while loading shared libraries: libmylib.so.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我将 libmylib.so 文件复制到 /usr/lib 中,那么一切都会按预期工作;但是,我希望我的应用程序在运行时自动在 CURRENT_PATH/lib 中搜索所需的库,而无需设置环境变量。我怎样才能实现它?