小编got*_*oto的帖子

如何测试已广播的意图

当点击"记录"按钮时,我正在广播一个意图.传递一个布尔变量,显示录制是否已开始.生成意图的代码是:

Intent recordIntent = new Intent(ACTION_RECORDING_STATUS_CHANGED);
recordIntent.putExtra(RECORDING_STARTED, getIsRecordingStarted());
sendBroadcast(recordIntent);
Run Code Online (Sandbox Code Playgroud)

为了测试这段代码,我在测试中注册了一个接收器.收到意图但传递的变量不一样.如果我调试代码,我可以看到该值与发送时相同,但是当我得到它时,它的值不同.

@Test
public void pressingRecordButtonOnceGenerateStartRecordingIntent()
        throws Exception {
    // Assign
    AppActivity activity = new AppActivity();
    activity.onCreate(null);
    activity.onResume();

    activity.registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context arg0, Intent intent) {
            // Assert
            ShadowIntent shadowIntent = Robolectric.shadowOf(intent);
            assertThat(shadowIntent
                    .hasExtra(AppActivity.RECORDING_STARTED),
                    equalTo(true));
            Boolean expected = true;
            Boolean actual = shadowIntent.getExtras().getBoolean(
                    AppActivity.RECORDING_STARTED, false);
            assertThat(actual, equalTo(expected));

        }
    }, new IntentFilter(
            AppActivity.ACTION_RECORDING_STATUS_CHANGED));

    ImageButton recordButton = (ImageButton) activity
            .findViewById(R.id.recordBtn);

    // Act
    recordButton.performClick();
    ShadowHandler.idleMainLooper();

}
Run Code Online (Sandbox Code Playgroud)

我也测试了实际的意图,而不是它的阴影,但结果相同

android unit-testing robolectric

8
推荐指数
1
解决办法
4443
查看次数

敲除映射对象“创建”函数中“跳过”对象的作用是什么

KO 映射插件的文档在传递给“create”函数的“options”参数中指定了以下两个对象。查看实际对象,还有另一个“跳过”对象。如果我们不想创建任何对象,它是内部的还是可以以某种方式使用的?

data:包含此子项数据的 JavaScript 对象

parent:这个孩子所属的父对象或数组

跳过创建完整对象的最佳方法是什么?目前我从 create 函数返回 null 并执行以下操作:

var mapping = {
  'create': function(options){
     // if I dont want to create
     return null;
     // else
     return new MyObject();
   }
}
var mapped = ko.mapping.fromJS(data, mapping);
mapped.remove(null)
Run Code Online (Sandbox Code Playgroud)

knockout-mapping-plugin knockout.js

5
推荐指数
0
解决办法
346
查看次数