![](/img/trans.png)
[英]How do I obtain an Access Token from an Unauthenticated 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.