我正在使用Realm for Android来存储一些数据.当用户按下注销按钮时,我想清除整个Realm数据库.为此,我有以下代码片段:
realm.close();
realm.deleteRealmFile(this);
goToLoginActivity();
Run Code Online (Sandbox Code Playgroud)
现在问题出在我的onResume函数中.我收到以下异常:
引起:java.lang.IllegalStateException:此Realm实例已被关闭,使其无法使用.
我的onResume代码如下:
@Override
protected void onResume() {
super.onResume();
// I'm trying to check if the realm is closed; this does not work
if (realm == null) {
realm = Realm.getInstance(this);
}
// Do query using realm
}
Run Code Online (Sandbox Code Playgroud)
如何查看领域对象是否已经关闭?或者,是否有更好的方法来清除数据库而不是删除领域文件?
-
编辑:刚刚看到如何轻松删除Realm for iOS中的所有对象.关于何时deleteAllObjects API可用于Android的任何消息?在撰写本文时,Android的版本为0.80.0,API在iOS中以0.87.0的形式提供.
我正在使用Mockito 1.9.5进行一些单元测试.我正在尝试将具体类模拟注入到具有私有接口字段的类中.这是一个例子:
我正在测试
@Component
public class Service {
@Autowired
private iHelper helper;
public void doSomething() {
helper.helpMeOut();
}
}
Run Code Online (Sandbox Code Playgroud)
我对这堂课的考试
@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {
@Mock
private iHelper helper;
@InjectMocks
private Service service;
@Before
public void setup() {
service = new Service();
}
@Test
public void testStuff() {
doNothing().when(helper).helpMeOut();
service.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
尝试在doSomething()中调用helper.helpMeOut()时,此代码抛出NullPointerException.我调试并发现在运行测试时helper为null.我也尝试将iHelper改为具体的Helper类,同样的问题也发生了.
有什么建议?如何让Mockito正确地将模拟注入接口私有字段?
为了构造函数注入,是否可以将参数传递给API类?例如,在index.php中我有以下内容:
$r->addAPIClass('Contacts', '');
Run Code Online (Sandbox Code Playgroud)
而Contacts.php看起来像这样:
class Contacts
{
private $v;
public function __construct(Validation v)
{
$this->v = v;
}
}
Run Code Online (Sandbox Code Playgroud)
我如何使用Restler做到这一点?