Я импортировал Firebase SDK в свое приложение Ember. Есть инициализатор, который внедряет Firebase во все приложение следующим образом:
export function initialize(application) {
const config = {
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "my-app-xxxxxx.firebaseapp.com",
databaseURL: "https://my-app-xxxxxx.firebaseio.com",
projectId: "my-app-xxxxxx",
storageBucket: "my-app-xxxxxx.appspot.com",
messagingSenderId: "xxxxxx"
}
if( typeof firebase !== 'undefined' && firebase) {
firebase.initializeApp(config);
application.register('firebase:home', firebase, {instantiate: false});
application.inject('route', 'firebase', 'firebase:home');
}
}
export default {
name: 'firebase',
initialize
};
Это инициализатор, который правильно внедряет firebase и делает его доступным во всех моих маршрутах и шаблонах, насколько я могу судить. Я могу использовать аутентификацию и читать, правильно писать в базу данных.
Проблема возникает, когда я пытаюсь написать приемочный тест. Например, простой тест, в котором я ввожу основной маршрут:
import { module, test } from 'qunit';
import { visit, currentURL } from '@ember/test-helpers';
import { setupApplicationTest } from 'ember-qunit';
module('Acceptance | login', function(hooks) {
setupApplicationTest(hooks);
test('visiting /login', async function(assert) {
await visit('/home');
debugger;
assert.equal(currentURL(), '/home');
});
});
При попадании на маршрут home
мгновенно выдается окно предупреждения ReferenceError: firebase is not defined
. Не должен ли инициализатор справиться с этим?
Я не понимаю, почему firebase
легко доступен, и все работает, когда приложение работает нормально, но это undefined
при использовании с приемочным тестом.