ember.js ember-cli/铁路水豚/rspec测试

vhmi4jdf  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(148)

我正在尝试用集成测试来设置我的ember-cli / rails应用程序。(反正我是用来做后台的),还有水豚。虽然我终于可以正确填写表格了,我的登录请求总是失败。我认为问题是水豚正在将请求发布到不同的数据库环境或其他地方!如果我在rails控制台上检查,用户肯定在那里,而且我还是创建了一个用户作为RSpec测试的一部分。
有人设法设置了Ember/Rails/Capybara/RSpec吗?
这是我的规格:

describe "the signin process", :type => :feature, :js => true do
  it "signs me in" do
    visit '/'
    FactoryGirl.create :user, email: "user@example.com", password: 'password'
    within("#tufts-nav") do
      fill_in 'email', :with => 'test@test.com'
      fill_in 'password', :with => 'password'
    end
    click_button 'Sign In'

# here authentication fails mysteriously

    expect(page).to have_content 'Jobs'
  end
end
rlcwz9us

rlcwz9us1#

简单/笨拙的解决方案

让RSpec在特性规范之前将ember构建到rails的public/中。


# build ember, hijack rails public/ directory to host ember app

# this way no need to change settings or run any servers

# assumes rails API root path is not used (since ember now hosted from it)

RSpec.configure do |config|
  public_path = Rails.root.join('public')
  config.before(:context, type: :feature) do
    Dir.chdir 'frontend' do
      builder = spawn("ember build --environment=ci -output-path=#{public_path}")
      _pid, status = Process.wait2(builder)
      fail "non-zero exit status #{status}" unless status == 0
    end
  end

  config.after(:context, type: :feature) do
    `git clean -fd #{public_path}`
    `git checkout #{public_path}`
  end
end

配置中
我们的ember-cli应用程序位于rails-root/frontend中,您可能需要更改名称或路径以指向您的
您可能希望尝试环境部分,例如使用生产环境。我这样做是因为我的生产环境是硬编码的,以面向我们在heroku上托管的API,但我希望测试是自包含的,即在rails应用程序的水豚主机上运行。
清理需要Git。如果你没有Git,你可以构建到另一个路径,然后用mv换掉rails public/ dir,然后再放回去。
您可能不希望全局安装ember-cli来构建您的项目(出于版本控制的原因)。如果您希望使用项目本地的一个点,请使用node_modules/ember-cli/bin/ember而不是ember中的spawn命令。

否则,灰烬悬崖栏杆

如果你把ember应用当作rails应用的一个组件,并且想在rails级别(rspec,capybara等)编写测试,那么ember-cli-rails可能是一个不错的选择。
这个gem处理构建ember应用程序,并从你在你的rails路线中挂载它的url为它提供服务。
这对水豚来说是透明的:它向rubyWeb服务器发送请求,并返回调用css和js的html,就像Rails通常所做的那样。
要知道,现在有一些来自ember-cli的issues with assets正在通过正确的路径由rails提供服务,这让我切换到快速部署一些东西。如果你正在使用rails资产管道来处理css、图像等,那么你应该不会有问题。对我来说,它影响了ember-cli应用程序中的图像和web字体。
除此之外,还需要一个api服务器和一个ember前端服务器(代理到rails api),并且需要告诉capybara连接到ember前端。This Rakefilethis post似乎是一个开始。

相关问题