現在、このPRに取り組んでいます: FIX: presenting formatted location on User Card by merefield · Pull Request #73 · merefield/discourse-locations · GitHub
新しいフロントエンドテストで変更をカバーしようとしています。
しかし、必要なデータ属性が定義されていないため、テストの実行に失敗します。
現在直面している問題は、ここに保持されているフィクスチャを使用して、Siteのデータを正常にオーバーライドする方法です。
これは、Locations Pluginが存在する場合にSiteが保持する追加の属性が含まれています。
…そして、テスト全体でそれを永続させます!
新しいテストはここにあります。
フィクスチャを使用してSiteを正常にロードしているようです。
ブラウザでqunitの実行中にこのデバッガポイントで停止し、正しくロードされていることがわかります。
test("user card location - shows correct format", async function (assert) {
const siteAttrs = {
...siteFixtures["site.json"].site,
};
PreloadStore.store("site", cloneJSON(siteAttrs));
Site.resetCurrent();
debugger;
PreloadStore.get("site")

しかし、User Cardがクリックされると、データは期待どおりではなく、特にcountry_codes属性が欠落しているため、テストはここで停止します。
オーバーライドしたSiteデータが失われているのはなぜですか?
「いいね!」 1
OK、これはイライラします。
Site オブジェクトの値はここで設定されているようです。
そして上書きできないのでしょうか?
コアのフィクスチャ(こちら: https://github.com/discourse/discourse/blob/93a4012ecb3af7306de0c51283d6dd2b2e90818c/app/assets/javascripts/discourse/tests/fixtures/site-fixtures.js)を変更して確認しましたが、私の変更が反映されています。
しかし、そうではなく、私のプラグイン内のフィクスチャで上書きしたいのです。
繰り返しになりますが、テスト コード のスコープではそれが可能ですが、プラグインコードが実行されると、コアのテストヘルパーによってロードされたフィクスチャに関連するサイトオブジェクトがスコープによって取得されているようです…

これを解決しました。他のオブジェクトと同様に needs を使用できることがわかりました。
手がかりはこちら:
最終的なコード:
needs.site(cloneJSON(siteFixtures["country_codes.json"]));
「いいね!」 3
system
(system)
クローズされました:
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.