Вы можете выполнить такое тестовое задание, вызвав someTask.perform()
. Для данного задания вы можете указать, что вам нужно, чтобы тщательно его протестировать:
test('update project task sets the project title and calls save', function(assert) {
const model = {
project: {
set: this.spy(),
save: this.spy()
}
};
const growl = {
success: this.spy()
};
// using new syntax
const controller = this.owner.factoryFor('controller:someController').create({ model, growl, newTitle: 'someTitle' });
controller.updateProject.perform();
assert.ok(model.project.set.calledWith('someTitle'), 'set project title');
assert.ok(growl.success.calledWith('success'), 'called growl.success()');
});
При этом используются шпионы из sinon и ember-sinon-qunit для доступа к sinon из тестового контекста, но это не обязательно для модульного тестирования. Вы могли бы заглушки модели и услуг и т. Д. С утверждениями вместо шпионов:
const model = {
project: {
set: (title) => {
assert.equal(title, 'someTitle', 'set project title');
},
save: () => {
assert.ok(1, 'saved project');
}
}
};
Чтобы проверить улов, который вы можете бросить с вашей заглушки model.project.save()
метод:
const model = {
project: {
...
save: () => throw new Error("go to catch!")
}
};