С API-интерфейсами Rally SDK 2.0 я хочу связать новые тестовые базы с данным TestSet. Для этого I:Удалите все тестовые примеры, связанные с TestSet
инициализирует магазин:
me.selectedTestCasesStore = myTestSet.getCollection('TestCases',{...});
Удалить все элементы (я не хочу, чтобы держать их):
me.selectedTestCasesStore.removeAll();
Добавить новые TestCases
me.selectedTestCasesStore.add({'_ref':aTestCaseRecord.data._ref});
Затем синхронизировать
me.selectedTestCasesStore.sync({...});
Шаг 1 ОК: console.log(me.selectedTestCasesStore)
показывает мне коллекцию в data.items[]
.
Шаг 2 кажется ОК как console.log(me.selectedTestCasesStore)
ничего не показывает в data.items[]
(предыдущие записи исчезли).
Шаг 3 в порядке, потому добавлены тестовые случаи, которые не присутствовали на шаге 1, в настоящее время в коллекции
Шаг 4: Вызывается функция «Успех»
НО ... только новые TestCases , старые не удаляются, как если бы шаг 2 не влиял. Что случилось в моем коде? Я извлекаю часть соответствующего кода:
// me.selectedTestCasesStore : my store, with old TestCase associated to a TestSet.
// It is initialized with something like :
// me.selectedTestCasesStore = myTestSet.getCollection('TestCases',{...});
//
// selectedTestCasesArray : an array of records with the new TestCases to assign to the test set.
_removeAllFromSelectedTestCaseStore:function()
{
var me = this ;
console.log('In _removeAllFromSelectedTestCaseStore');
me.selectedTestCasesStore.addListener({
clear : me._addSelectedTestCasesToSelectedTestCaseStore,
scope : me,
});
// Remove all associated TestCases from selectedTestCases store
me.selectedTestCasesStore.removeAll();
},
_addSelectedTestCasesToSelectedTestCaseStore:function()
{
var me = this ;
console.log('In _addSelectedTestCasesToSelectedTestCaseStore');
console.log(' After remove, store is now :',me.selectedTestCasesStore);
// Add each check TestCase to selectedTestCases store
for (var i=0; i < me.selectedTestCasesArray.length; i++)
{
// Add it to the collection
me.selectedTestCasesStore.add({'_ref':me.selectedTestCasesArray[j].data._ref});
}
console.log(' After add, store is now :',me.selectedTestCasesStore);
// Synchronyze
me.selectedTestCasesStore.sync(
{
success: function(batch, options) {
//success!
console.log(' Success', me.selectedTestSetStore);
},
failure: function(batch, options){
console.log(' Faillure :(', me.selectedTestSetStore);
},
});
},
Благодарим за помощь!
Это кажется, является ошибкой с использованием removeAll, но вышеописанное решение должно получить вас ... –
Спасибо, обходное решение работает. Но, возможно, другие ошибки в API: во-первых, если я не перезагружаю testCaseStore после первой синхронизации, добавление и вторая синхронизация не имеют эффектов: мой набор тестов пуст, ничего не добавлено. Если я перезагружу testCaseStore после первой синхронизации, все в порядке, старые тестовые окна будут удалены, а новые будут добавлены. И затем, если testCaseStore пуст, прежде чем удалить его, никто из вызова обратного вызова не будет вызван. Теперь, с обходным решением и перезагрузкой после синхронизации, это работает! –