我正在尝试用集成测试来设置我的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
1条答案
按热度按时间rlcwz9us1#
简单/笨拙的解决方案
让RSpec在特性规范之前将ember构建到rails的public/中。
配置中
我们的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 Rakefile和this post似乎是一个开始。