您好,
我们正在使用 Discourse 版本 3.5.0。
我们有自己的插件,在其中我们覆盖了 Discourse 的各种元素并添加了自己的功能。
在此插件中,我们特别希望在 composer 的工具栏中添加一个事件添加图标。为此,我们需要导入:
-
模型
DiscoursePostEventEvent,位于plugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.js -
组件
PostEventBuilder,位于plugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.js
此外,我们还编写了集成测试来测试我们插件中的功能,这些测试位于我们插件的 /test 目录下。
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
acceptance("TOTO", function (needs) {
test("coopaname integration - composer", async function (assert) {
await visit("/");
assert.equal(1, 1, "OK");
});
});
我们可以实现我们的目标,但无论导入方式如何,测试都会失败。
文件头部导入
当我们在文件头部使用 import 方法导入我们的模型和组件时:
import DiscoursePostEventEvent from "discourse/plugins/discourse-calendar/discourse/models/discourse-post-event-event";
import PostEventBuilder from "discourse/plugins/discourse-calendar/discourse/components/modal/post-event-builder";
执行时一切正常,但当我们运行测试时,它没有被执行。
文件头部 require
当我们在文件头部使用 require 方法导入我们的模型和组件时:
const DiscoursePostEventEvent = require("discourse/plugins/discourse-calendar/discourse/models/discourse-post-event-event").default;
const PostEventBuilder = require("discourse/plugins/discourse-calendar/discourse/components/modal/post-event-builder").default;
执行时一切正常,但当我们运行测试时,它没有被执行。
这与使用 import 时产生的结果相同。
文件体 require
当我们在函数体中使用 require 方法导入我们的模型和组件时:
import { withPluginApi } from "discourse/lib/plugin-api";
function initializeEventBuilder(api) {
const DiscoursePostEventEvent =
require("discourse/plugins/discourse-calendar/discourse/models/discourse-post-event-event").default;
const PostEventBuilder =
require("discourse/plugins/discourse-calendar/discourse/components/modal/post-event-builder").default;
// ... rest of the code
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
执行时一切正常,但当我们运行测试时,它失败了。
模型未找到。
总之,我们想知道如何从其他插件正确导入模型、组件等,以便我们可以运行集成测试。
谢谢!



