簡體   English   中英

Mocking 用於前端單元測試的 AWS Cognito Identity 池提升錯誤:“沒有為未經身份驗證的訪問提供 Cognito Identity 池”

[英]Mocking AWS Cognito Identity pools for frontend unit tests to elevate error: "No Cognito Identity pool provided for unauthenticated access"

我正在為一個使用預建 AWS angular 模板的 angular 項目進行前端單元測試(Jasmine、Karma)。 我是該項目和 AWS 的新手。 該應用程序本身可以正常運行。 最終,應該沒有 AWS/服務器連接,所有服務都將被模擬。

我遇到的問題是運行 Karma 單元測試規范時看似隨機的組件引起的不一致錯誤。 這些組件沒有與 AWS 相關的調用或服務調用。 很多都很簡單,主要是前端模板(沒有后端相關邏輯)。

錯誤:未捕獲(承諾):沒有為未經身份驗證的訪問提供 Cognito 身份池

我仍在努力思考 AWS 服務(用戶池、身份池等)——並且不知道為什么會出現此錯誤。

有人可以解釋發生了什么,或者我如何通過某種配置在整個應用程序中 go 關於 mocking AWS,或者創建一個模擬用戶身份池來提升此錯誤。 我已經閱讀了每個網頁的感覺,但仍然卡住了:(

提前致謝!

我通過mocking應用程序調用的 Auth 服務修復了以下問題。 這也可以通過在 AWS Cognito 調用上添加間諜來完成。 我只是簡單地返回了偽造的憑據,這些憑據將向應用程序表明我已登錄,並告訴我的 TestBed 模塊使用它而不是真正的 AuthService。 下面是我添加到這個模擬服務 class 的唯一代碼,到目前為止它一直有效。

auth.mock-service.ts

AuthContext$ = of({
    username: ''
});

這適用於我的前端單元測試,因為根本不需要連接到 AWS。

我認為它正在發生,因為 AWS 邏輯仍在服務中運行,該服務被注入其中一個組件或那些功能仍在運行。

https://testing-angular.com/debugging-tests/#debugging-tests

^ 這是學習單元測試的非常好的資源,但有關於調試測試的章節。

https://testing-angular.com/faking-dependencies/#faking-dependencies

^ 這是關於偽造依賴關系的一章。

https://stackoverflow.com/a/62935131/7365461

^ 不幸的是,隨着 TypeScript 和 Jasmine 的進步,很難像 amazon-web-services 一樣模擬 npm package。我發現上面的答案是最好的方法。

希望所有這些都有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM