在验收/集成测试期间,在存根/模拟余烬服务内部断言

时间:2016-09-09 12:30:27

标签: ember.js

在服务的单元测试中,我一直把断言放在服务存根中,这已经非常方便了。

单元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');
}

我还没有找到一种传递“断言”的方法。反对这样的存根。

对我而言,在验收测试期间这是可取的。该服务发生了,并且在验收测试中做了相当复杂的事情,我不想重新测试我的服务。我只想确认触发了预期的服务调用。

1 个答案:

答案 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