Tag: rspec

Rails模型测试 – 模拟与工厂

Rails测试模拟对象与使用工厂对象的最佳实践是什么。 是否应该在模型可能转到外部源时使用模拟? 或者,当您测试实际模型并使用模拟处理其他所有内容时,您是否只使用工厂? 例如,如果我们在测试客户模型时有客户和订单的销售系统,我们是否会模拟订单或者我们只是使用工厂订单? 它甚至有所作为吗?

Capybara ajax比赛条件

我经常遇到水豚问题,请求测试失败,因为水豚不会等待ajax事件完成后再继续。 谷歌似乎表明我应该使用:我的测试的resynchronize选项来解决这个问题。 但它没有用。 为了certificate这是一个问题,可以通过在ajax调用之后放置一个sleep语句来修复失败的测试。 这似乎是任何不好的做法,因为适当的延迟将根据运行测试的机器的速度而变化。 选择一个适当大的值会严重减慢运行带有大量ajax操作的测试套件的速度。 下面是失败/通过测试的一个例子。 单击“保存”之前的睡眠会使页面上的传递/失败区别开来。应该是has_content(’custom item’): it “should be able create a new todo item”, :js, :resynchronize, :focus do # Visit new action visit new_todo_list # Fill in the name fill_in “#name”, “test list” # Click on add item to launch inline popup find(‘a.add-item’).click within ‘#new_item’ do fill_in ‘todo_item_description’, :with => ‘custom […]

如何在水豚中单击此按钮

请帮我解决水豚这个问题 我在水豚中有一个这样的按钮: 我试过了 click_button “verify” 但它给出了错误: Failure/Error: find(‘#verify’).click NoMethodError: undefined method `node_name’ for nil:NilClass

对模型属性进行存根

我正在为我的汽车课写rspec测试,并且有关于设置模拟的问题。 我想在汽车中存放零件arrays,我该怎么做? 我有以下代码: class Cars has_many :parts def heavy_count parts.inject(0) { |sum, v| v.weight > 10 ? sum + 1 : sum } end end 有了测试 context (“#heavy_count”) do let(:car) {mock_model(Car, :brand => “toyota”)} let(:vote_1) {mock_model(Part, :weight => 11)} let(:vote_2) {mock_model(Part, :weight => 11)} it “should return 2 if there are 2 parts heavier than […]

在RSTP中接收PUT的错误,但不是POST

在我的规格中,当我在下面运行POST请求时,一切正常。 before do request_payload = { player: { first_name: “Joe”, last_name: “Carradine”, team_id: “1” } } post :create, request_payload end 但是当我为PUT运行规范时: before do request_payload = { player: { first_name: “Buck”, last_name: “Carradine”, team_id: “1” } } put :update, id: 3, request_payload end 我收到这样的错误: [filename]_spec.rb:139: syntax error, unexpected ‘\n’, expecting tASSOC (SyntaxError) [filename]_spec.rb:198: syntax error, unexpected […]

有没有办法撤消any_instance的Mocha存根?

在我的控制器规格中,我的存根有效吗? 对于一些路由测试,(基于Ryan Bates nifty_scaffold)如下: – it “create action should render new template when model is invalid” do Company.any_instance.stubs(:valid?).returns(false) post :create response.should render_template(:new) end 当我单独测试控制器时,这很好。 我的模型规格中也有以下内容 it “is valid with valid attributes” do @company.should be_valid end 再次,这在隔离测试时工作正常。 如果我为模型和控制器运行规范,问题就来了。 模型测试总是失败为有效? 方法已被删除。 当控制器测试被拆除时,有没有办法删除any_instance的存根。 我通过以反向字母顺序运行测试来解决问题,以确保模型测试在控制器之前运行,但我真的不喜欢我的测试依赖于序列。

当guard-rspec与spork一起使用时没有通知

我正在使用Ruby-1.9.2和rails-3.1.3在ubuntu机器上工作。 我使用guard-rspec进行自动测试和spork作为DRB服务器。 当我没有spork运行警卫时,它会显示正确的通知。 但是spork的守卫根本没有显示任何通知。 这是我的Gemfile的相关部分 group :test, :development do gem ‘rake’, ‘0.9.3.beta.1’ gem ‘turn’ gem ‘rspec-rails’ gem ‘rspec’ gem ‘guard-rspec’ gem ‘spork’ gem ‘webrat’ gem ‘rb-fchange’ gem ‘rb-fsevent’ gem ‘libnotify’ end

使用rspec / devise登录集成测试

我正在进行集成测试时遇到麻烦,因为用户登录我的rails应用程序,通过。 我正在使用Rspec和capybara,以及设计用户身份validation 这是我的代码: 请求/ authentications_spec.rb describe ‘log in’ do before { visit root_path } subject { page } describe ‘should be able to log in’ do before do user = FactoryGirl.create(:user) fill_in :user_email, with: user.email fill_in :user_password, with: user.password click_on ‘Log in’ end it { should have_link ‘Log out’ } end end 工厂/ user_factory.rb FactoryGirl.define […]

为什么我的黄瓜场景在步骤一起运行时失败,但在单独运行时通过?

当我整个运行我的黄瓜场景,或者使用命令:黄瓜时,我得到7个失败的步骤。 当我使用正在进行的工作标签单独运行它们时,它们会很好地通过。 我不认为这是一个数据库状态问题..我正在运行事务,我也尝试运行没有和清理数据库清理数据库….仍然没有帮助。 我试图运行调试器,但是当我运行命令黄瓜时它似乎不起作用。 它只适用于我使用正在进行的工作标记: cucumber -p wip 我认为可能是事情运行得太快而且水豚没有正确检查事情? 有任何想法吗?

通过模块共享范围?

我想通过将共享范围移动到模块中来干掉几个模型,例如: module CommonScopes extend ActiveSupport::Concern module ClassMethods scope :ordered_for_display, order(“#{self.to_s.tableize}.rank asc”) end end 我还想创建测试模块的共享规范。 不幸的是,当我尝试在模型中包含共享范围时,我得到: undefined method `order’ for CommonScopes::ClassMethods:Module 有任何想法吗? 谢谢!