Я хочу сделать тест e2e услуги angularjs, не издеваясь над $ http call. Вызов fsSvc.getSubject приводит к нескольким встроенным асинхронным вызовам, что в конечном итоге заканчивается вызовом функции обратного вызова, где я выполнил вызов.
Не уверен, что это не работает - не стоит $ HTTP сделать призыв к реальным, если его не издевались ?:
it('should pass auth', function(done) {
inject(function (fsSvc) {
var cb = sinon.spy();
stubs.updateRecord = sinon.stub(dataSvc, 'updateRecord');
dataSvc.LO.famSrch.access_token_expires = false;
fsSvc.getSubject("abc", function(err, data) {
console.log("err:" + err);
done();
cb();
});
$timeout.flush();
expect(dataSvc.LO.famSrch.discovery).to.not.be.undefined;
expect(dataSvc.LO.famSrch.discovery.links).to.not.be.undefined;
expect(dataSvc.LO.famSrch.access_token).to.not.be.undefined;
expect(dataSvc.LO.famSrch.username).to.equal("test");
expect(dataSvc.LO.famSrch.password).to.equal(btoa("test"));
expect(dataSvc.LO.famSrch.access_token_expires).to.be.greaterThan(3600000);
expect(stubs.updateRecord.callCount).to.equal(1);
expect(stubs.updateRecord.args[0][1]).to.equal("localOption");
expect(cb.callCount).to.equal(1);
})
});
Возможно, вы случайно включили 'angular-mocks.js' на свою страницу? Если это так, вы получите издевательскую версию '$ httpBackend'. Кроме того, тесты e2e в Angular обычно выполняются через транспортир, и вы управляете объектом 'browser'. То, что у вас в вашем вопросе, выглядит как единичный тест. – Phil
Это технически единичный тест, но это то, что я хочу. Я не хочу запускать транспортир и выполнять сервис, вызывая элемент DOM веб-страницы. Я просто хочу проверить сервис. Угловые макеты, настроенные в карме, я должен был подумать об этом. Может быть, я попробую альтернативную конфигурацию кармы – ed4becky
ugh, затем я потеряю инъекцию ... – ed4becky