首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法模拟Emberfire的会话

无法模拟Emberfire的会话
EN

Stack Overflow用户
提问于 2016-08-11 23:50:06
回答 1查看 150关注 0票数 0

我正在针对具有管理和非管理功能的路由编写一个非常基本的验收测试。我的测试断言,如果我第一次访问这个应用程序,我看不到登录功能。在我的应用程序中,我使用password身份验证,如下所示:

代码语言:javascript
复制
this.get('session').open('firebase', {
  provider: 'password',
  email: email,
  password: password
});

我发现,当我没有在应用程序认证,然后运行验收测试,它通过。但是,如果我随后登录应用程序,然后运行测试,我的断言就会失败,因为会话被恢复了,而我认为它不应该恢复。下面是一个测试:

代码语言:javascript
复制
import { test } from 'qunit';
import moduleForAcceptance from 'app/tests/helpers/module-for-acceptance';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import replaceAppRef from '../helpers/replace-app-ref';
import replaceFirebaseAppService from '../helpers/replace-firebase-app-service';
import stubFirebase from '../helpers/stub-firebase';
import unstubFirebase from '../helpers/unstub-firebase';
import { emptyApplication } from '../helpers/create-test-ref';

moduleForAcceptance('Acceptance | index', {
  beforeEach: function() {
    stubFirebase();
    application = startApp();
    replaceFirebaseAppService(application, { });
    replaceAppRef(application, emptyApplication());
  },
  afterEach: function() {
    unstubFirebase();
    destroyApp(application);
  }
});

test('empty app - not authenticated', function(assert) {
  visit('/');
  andThen(function() {
    assert.equal(currentURL(), page.url, 'on the correct page');

    // this works if there's no session - fails otherwise
    assert.notOk(page.something.isVisible, 'cannot do something');
  });
});

我认为replaceFirebaseAppService应该覆盖torii-adapter,但看起来并非如此。任何帮助都将不胜感激。

我在用:

代码语言:javascript
复制
Ember      : 2.7.0
Ember Data : 2.7.0
Firebase   : 3.2.1
EmberFire  : 2.0.1
jQuery     : 2.2.4
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-14 13:11:38

仔细看看Emberfire,replaceFirebaseAppService正在尝试替换torii-adapter:firebase注册的torii适配器,当时它正被我的应用程序注册为torii-adapter:application

我最后所做的基本上是在我自己的助手中复制replaceFirebaseAppService

代码语言:javascript
复制
import stubFirebase from '../helpers/stub-firebase';
import startApp from '../helpers/start-app';
import replaceAppRef from '../helpers/replace-app-ref';
import createOfflineRef from './create-offline-ref';

export default function startFirebaseApp(fixtures = { }) {
  stubFirebase();
  let application = startApp();

  // override default torii-adapter
  const mock = { };
  application.register('service:firebaseMock', mock, {
    instantiate: false,
    singleton: true
  });
  application.inject('torii-provider:application', 'firebaseApp', 'service:firebaseMock');
  application.inject('torii-adapter:application', 'firebaseApp', 'service:firebaseMock');

  // setup any fixture data and return instance
  replaceAppRef(application, createOfflineRef(fixtures));
  return application;
}

这就阻止了torii适配器解析我使用应用程序时可能拥有的任何会话数据。然后,我可以使用提供的torii助手来模拟我需要的会话:

代码语言:javascript
复制
// torii helper
import { stubValidSession } from 'app/tests/helpers/torii';

// mock a valid session
stubValidSession(application, { });

希望这能给别人省点时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38907795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档