首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails中管理面板指标的测试控制器

Rails中管理面板指标的测试控制器
EN

Stack Overflow用户
提问于 2016-01-21 20:24:56
回答 1查看 62关注 0票数 0

我有一个非常简单的管理面板,在那里我显示了总用户数,本周的新用户数和本月的新用户数。我想在我的控制器规范中写一个测试。目前,我正在尝试获得工作的总用户数。编码新手。谢谢!

我得到了这个错误:

代码语言:javascript
复制
1) Admin::DashboardController metrics shows correct metrics for # of users
 Failure/Error: users = FactoryGirl.create_list([@user_1, @user_2, @user_3])
 ArgumentError:
   wrong number of arguments (1 for 2+)

dashboard_controller_spec.rb:

代码语言:javascript
复制
  describe 'metrics' do
    before :each do
      @user_1 = FactoryGirl.create(:user, created_at: Time.now)
      @user_2 = FactoryGirl.create(:user, created_at: Time.now - 1.week)
      @user_3 = FactoryGirl.create(:user, created_at: Time.now - 4.week)
    end

    it 'shows correct metrics for # of users' do
      users = FactoryGirl.create_list([@user_1, @user_2, @user_3])
      expect(assigns(:metrics[:users][:total])).to eq(users)
    end

    it 'shows correct number of new users this week' do
    end

    it 'shows correct number of new users this month' do
    end
  end

dashboard_controller.rb

代码语言:javascript
复制
class Admin::DashboardController < ApplicationController
  before_action :authorize_user!

  def index
    @metrics = {
      users: {
        total: User.count,
        this_week: User.where('created_at >= ?', 1.week.ago).count,
        this_month: User.where('created_at >= ?', 4.weeks.ago).count
      }
    }
  end
end
EN

回答 1

Stack Overflow用户

发布于 2016-01-21 22:59:56

我找到了答案:

代码语言:javascript
复制
describe 'metrics' do
  before :each do
    @user_1 = FactoryGirl.create(:user, created_at: Time.zone.now)
    @user_2 = FactoryGirl.create(:user, created_at: Time.zone.now - 1.week)
    @user_3 = FactoryGirl.create(:user, created_at: Time.zone.now - 4.weeks)
  end

it 'shows correct metrics for # of users' do
  expect do
    users = FactoryGirl.create_list([@user_1, @user_2, @user_3])
    assigns(:metrics).to eq(users)
  end
end

it 'shows correct number of new users this week' do
  expect do
    users = FactoryGirl.create_list([@user_1, @user_2, @user_3])
    assigns(:metrics[users][last_week]).to eq(users)
  end
end

it 'shows correct number of new users this month' do
  expect do
    users = FactoryGirl.create_list([@user_1, @user_2, @user_3])
    assigns(:metrics[users][last_month]).to eq(users)
  end
end

结束

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34923770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档