小编wic*_*ked的帖子

使用MongoDB Compass进行连接

我正在尝试使用MongoDB Compass查看集合的内容。我已经设置了用户名/密码验证。我可以成功登录,但是在收藏集中看不到任何文档。相反,我看到了错误:

加载导航时发生错误:命令hostInfo需要验证。

以下是用户具有的角色列表:

"roles": [{
    "role": "readWrite",
    "db": "moviesDB"
  },
  {
    "role": "dbAdmin",
    "db": "moviesDB"
  },
  {
    "role": "dbOwner",
    "db": "moviesDB"
  },
  {
    "role": "clusterMonitor",
    "db": "admin"
  },
  {
    "role": "dbAdmin",
    "db": "moviesDB"
  }
]
Run Code Online (Sandbox Code Playgroud)

我可以使用mongo shell和node.js驱动程序成功查询集合,但不能通过Compass。如果有人可以告诉我我在做什么错,我将不胜感激。提前致谢!

database-connection database-administration mongodb mongodb-compass

8
推荐指数
2
解决办法
5159
查看次数

使用 Cypress 在 SVG 上测试 onclick 事件

我正在用 Cypress 测试 d3 应用程序。在测试中,我想确保在单击 SVG 元素中的圆圈时调用特定函数。当我手动单击但我编写的测试失败时会调用该函数,因此我认为我在测试中的某个地方犯了错误。这是我现在拥有的测试代码:

import * as app from "../../app";

describe("Scatter plot", () => {
  before(() => {
    cy.visit("http://localhost:1234");
  });
  it("Triggers the displayMovieInfo on click", () => {
    const displayMovieInfo = cy.spy(app, "displayMovieInfo");
    cy.get("#scatterPlot")
      .get("circle")
      .eq(0)
      .click({ force: true });

    expect(displayMovieInfo).to.be.called;
  });
});
Run Code Online (Sandbox Code Playgroud)

我从赛普拉斯得到的输出:

预计 displayMovieInfo 至少被调用过一次,但从未被调用过

任何帮助将不胜感激!

更新:我相信点击之前可能不起作用,因为当柏树尝试点击它时,圆圈不存在。通过添加“等待 cy.wait(1000);” 在单击操作之前,调用该函数(我可以看到结果和从其中记录的消息)。遗憾的是,测试仍然失败。

更新2:我将测试改为使用window对象(见下文),但断言仍然失败(测试本身成功,这也不是一件好事)。

 cy.window()
      .then(window => {
        displayMovieInfoSpy = cy.spy(window, "displayMovieInfo");
        cy.get("#scatterPlot")
          .get("circle")
          .eq(2)
          .click({ force: true })
          .as("clicking");
        expect(displayMovieInfoSpy).to.be.called;
      });
Run Code Online (Sandbox Code Playgroud)

更新3:似乎d3和parcel.js的组合导致测试失败。当单独使用 d3 或单独使用 parcel.js 时,测试工作正常。此外,expect 语句应该在点击动作之后的 then …

javascript testing ui-testing d3.js cypress

5
推荐指数
2
解决办法
3819
查看次数