在服务的单元测试中,我一直把断言放在服务存根中,这已经非常方便了。
单元test.js
let fooServiceStub = Ember.Object.extend({
fooMethod(bar) {
this.assert.ok(bar, 'fooMethod called with bar');
}
});
...
test('blah', function(assert) {
assert.expect(1);
let stubFooService = fooServiceStub.create({ assert });
let fooService = this.subject({
fooService: stubFooService
});
fooService.fooMethod('data');
});
存根服务中的断言是否可用于接受/集成测试?
我遇到的问题是,对于接受/集成测试,注入服务的方式与单元测试不同。
接受-test.js
let fooServiceStub = Ember.Service.extend({
fooMethod(bar) {
return 'baz';
}
});
....
beforeEach: function () {
this.application.register('service:mockFooService', fooServiceStub);
this.application.inject('controller', 'fooService', 'service:mockFooService');
}
我还没有找到一种传递“断言”的方法。反对这样的存根。
对我而言,在验收测试期间这是可取的。该服务发生了,并且在验收测试中做了相当复杂的事情,我不想重新测试我的服务。我只想确认触发了预期的服务调用。
答案 0 :(得分:3)
你可以在测试中做这样的事情:
def move_zeros(array):
if array:
head, tail = array[0], move_zeros(array[1:])
if head is 0:
array = tail
array.append(head)
else:
array = [head]
array.extend(tail)
return array