Rally SDK集合商店同步抛出404

时间:2017-01-31 17:42:41

标签: javascript post sdk rally

编辑:我最终使用Rally.data.util.Record.serverSideCopy()并重新检索/更新新的测试用例以完成此工作。我正在离开这个尚未解决的问题,因为我仍然无法弄清楚为什么我会在同步中获得404(尽管如此,自从我朝着不同的方向前进时,我可能没时间深入研究它。)

我正在尝试将TestCaseSteps添加到TestCase(我从另一个TestCase中复制 - 原始的步骤集合在保存期间丢失,因为它们与原始TestCase相关联)。我尝试遵循Collection Modification section of the doc中建议的添加/同步模式,但仅提供步骤的_ref值导致sync()操作失败并且POST上有404:

HTTP ERROR 404

Problem accessing /slm/webservice/v2.0/TestCase/90167266916/Steps/add. Reason:

Not Found

如下所示,我接着尝试通过原始对象而不是_ref值添加Steps,但是我收到了相同的404。

我在这里做错了什么?为什么我的同步操作导致404?

有关进一步的背景,这里是回购: https://github.com/crdschurch/reuse-rally-test

var newSteps = newTestCase.getCollection('Steps', {autoLoad: true});

  oldTestCase.getCollection('Steps').load({
    callback: function(oldRecords, newOperation, newSuccess) {
      Ext.Array.each(oldRecords, function(step) {
        console.log(step.get('_ref'));
        //debugger;
        newSteps.add(
          {
            'Input': step.get('Input'),
            'ExpectedResult': step.get('ExpectedResult'),
            'StepIndex': step.get('StepIndex'),
            'TestCase': newTestCase.get('ObjectID')
          }
        );
      });

      console.log('Syncing: ');
      console.log(newSteps);

      newSteps.sync({
        callback: function() {
          console.log('New Test: ');
          console.log(newTestCase);
        }
      });
    }
  });

1 个答案:

答案 0 :(得分:0)

我的猜测是你需要将TestCase指定为ref而不仅仅是它的objectid:

newSteps.add({
    'Input': step.get('Input'),
    'ExpectedResult': step.get('ExpectedResult'),
    'StepIndex': step.get('StepIndex'),
    'TestCase': newTestCase.get('_ref')
});