У меня есть mixin, который помогает мне пройти через последовательность шагов. В основном, он смотрит на то, что представляет собой текущий шаг, а затем делает некоторую магию, основанную на этом. Проблема в том, что первая строка функции захватывает this.controllerFor('document')
, и я не понимаю, как издеваться над этим вызовом controllerFor
. Я знаю, что могу, например, передать {testing: "123"}
в .create
в тесте. Тогда это даст мне this.get('testing')
, но как я издеваюсь над controllerFor
? Кроме того, чтобы быть ясным, единственная причина для контроллера. Для вызова - это то, что я могу получить currentStep
.Mocking controllerFor в тестах qunit.
Prepare-next.js
setNext: function() {
let currentStep = this.controllerFor('document').get('currentStep');
if (currentStep === 'First_step') {
//do something
} else {
//do something else...
}
// Bunch more stuff happens...
}
Prepare-Следующего test.js
import Ember from 'ember';
import PrepareNext from 'my-app/mixins/prepare-next';
import { module, test } from 'qunit';
module('mixin:prepare-next');
const PrepareNextObject = Ember.Object.extend(PrepareNext);
let subject;
test('#setNext does all the things', function(assert) {
subject = PrepareNextObject.create();
subject.setNext();
//assert.equal(foo, bar);
});
Какие утверждения вы хотите сделать? вы можете использовать sinon.js, если вы просто утверждаете, что данная функция вызывается с конкретными аргументами. в противном случае я считаю, что приемочные тесты являются более подходящим уровнем тестирования для такого рода вещей. –