编辑:我最终使用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);
}
});
}
});
答案 0 :(得分:0)
我的猜测是你需要将TestCase指定为ref而不仅仅是它的objectid:
newSteps.add({
'Input': step.get('Input'),
'ExpectedResult': step.get('ExpectedResult'),
'StepIndex': step.get('StepIndex'),
'TestCase': newTestCase.get('_ref')
});