0

파이어베이스 3 업데이트 전에 우리의 수락 테스트가 아무런 문제없이 실행되었습니다. 우리는 시험에 대한 고정 우리 beforeTestafterTest엠버/엠버 파이어 + 파이어베이스 3 수락 테스트

moduleForAcceptance('Acceptance | Dashboard | Items | Library | New', { 
    beforeEach() { 
    stubFirebase(); 
    var ref = createOfflineRef(basicDataRef, 'https://MY-APP.firebaseio.com'); 
    replaceAppRef(this.application, ref); 
    stubValidSession(this.application, {uid: 'xxxx'}); 
    }, 
    afterEach() { 
    unstubFirebase(); 
    } 
}); 

basicDataRef에 다음 사용합니다. 위의 코드는 도리 라이브러리의 테스트 도우미에 따라 세션을 모의 실행하여 내 응용 프로그램이 내 firebase hieararchy가 필요한 데이터를 올바르게 얻을 수 있도록합니다. / + - uid + - profile + otherdata

권한 규칙을 테스트하지 않고 응용 프로그램에서 데이터를 저장/편집하기위한 상호 작용 만 수행 중이며이 작업은 firebase 3 이전 이전에 정상적으로 수행되었습니다. 버전 3 후 내 모든 테스트는 다음 반환

actual: > 
     false 
    expected: > 
     true 
    stack: > 
      at http://localhost:7357/assets/test-support.js:4130:12 
      at exports.default._emberTestingAdaptersAdapter.default.extend.exception (http://localhost:7357/assets/vendor.js:49473:7) 
      at onerrorDefault (http://localhost:7357/assets/vendor.js:41461:24) 
      at Object.exports.default.trigger (http://localhost:7357/assets/vendor.js:62212:11) 
      at http://localhost:7357/assets/vendor.js:63463:40 
      at Queue.invoke (http://localhost:7357/assets/vendor.js:10415:16) 
    message: > 
     Error: permission_denied at /xxxx/profile: Client doesn't have permission to access the desired data. 

나는 항상 확인 규칙을 우회 할 수있게 해준다 emberfire에 createOfflineRef 생각했다. permission_denied가 계속 반환된다는 사실은 상당히 혼란 스럽습니다. 테스트를 다시해야할까요? 아니면이 모든 시간에 잘못이 접근합니까? 모든 입력이 크게 평가됩니다

+0

교육용 추측 : 새로운 Firebase 콘솔 (firebse.google.com)에서 프로젝트를 만들었습니까? 이 경우 새 데이터베이스의 보안 규칙이 이전 프로젝트와 다릅니다. https://firebase.google.com/docs/database/android/save-data의 첫 번째 파란색 상자를 참조하십시오. –

+0

예 프로젝트를 새 콘솔로 마이그레이션했습니다. 마이그레이션 된 프로젝트에서 v2 인터페이스를 사용하더라도 테스트가 제대로 실행됩니다. 그러나 우리는 firebase의 새로운 스토리지 기능을 사용하고자하므로 v3으로 마이그레이션해야합니다. 나는 주변을 파고 들었고 오류가 replaceAppRef와 관련이 있다고 생각합니다. 모든 인스턴스에서 참조를 바꾸지는 않지만 잘못된 것일 수 있습니다. – malatasf

답변

1

이 아래쪽에 있으며, 다른 사람이 가지고있는 것과 동일한 문제가 발생할 경우를 대비하여 내 자신의 질문에 답변 해 드리겠습니다.

새로운 firebase InitializeApp 메서드에는 이라는 추가적인 선택적 매개 변수가 있습니다. 기본적으로 Emberfire service 집합이 이름은합니다 :

export const DEFAULT_NAME = '[EmberFire default app]'; 

Emberfire test helper이 중포 기지 오프라인 심판 스텁을 만들 그러나 다른 인스턴스 이름으로 중포 기지 인스턴스가 될 :

export const DEFAULT_NAME = '[EmberFire offline test app]'; 

이 실패 할 내 테스트 원인 사용 권한이 거부 된인데, 수락 테스트가 '[EmberFire default app]'에 연결하려고 시도하고 스텁 된 오프라인 참조가 다른 것으로 호출되기 때문입니다.

DEFAULT_NAME을 (를) '[EmberFire default app]'으로 대체 한 자체 create-offline-ref 도우미를 작성하면 문제가 해결됩니다. 나는 변화가 엠버 파이어에 대해 신중하게 보인다고해서 수락 테스트를위한 가장 좋은 방법이 무엇인지 확신 할 수 없다.

관련 문제