首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将复杂的数据结构(结构数组)与Rspec匹配

将复杂的数据结构(结构数组)与Rspec匹配
EN

Stack Overflow用户
提问于 2012-06-27 17:51:45
回答 1查看 1.5K关注 0票数 0

如何将以下数组与Rspec匹配?

代码语言:javascript
复制
[#<struct Competitor html_url="https://github.com/assaf/vanity", description="Experiment Driven Development for Ruby", watchers=845, forks=146>, 
 #<struct Competitor html_url="https://github.com/andrew/split", description="Rack Based AB testing framework", watchers=359, forks=43>]

我需要检查一个类方法是返回一个像前面那样的结构数组,还是一个更广泛的数组,其中包括前面的结构。

更新:

我现在有一个绿色的测试,

代码语言:javascript
复制
require 'spec_helper'
  describe "Category" do
    before :each do
      @category = Category.find_by(name: "A/B Testing")
    end

    describe ".find_competitors_by_tags" do
      it "returns a list of competitors for category" do
        competitors = Category.find_competitors_by_tags(@category.tags_array).to_s
        competitors.should match /"Experiment Driven Development for Ruby"/
      end
    end
  end
end

但我想知道这是否是测试以下方法的正确方法,还是您认为这样做更好:

代码语言:javascript
复制
class Category
  ...

  Object.const_set :Competitor, Struct.new(:html_url, :description, :watchers, :forks)
  def self.find_competitors_by_tags(tags_array)
    competitors = []

    User.all_in('watchlists.tags_array' => tags_array.map{|tag|/^#{tag}/i}).only(:watchlists).each do |u|
      u.watchlists.all_in(:tags_array => tags_array.map{|tag|/^#{tag}/i}).desc(:watchers).each do |wl|
        competitors << Competitor.new(wl.html_url, wl.description, wl.watchers, wl.forks)
      end
    end
    return competitors
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-27 18:35:41

我将测试所需的最小值,以确保find函数正确工作。您可能不需要检查每个字段中返回的记录。你拥有的就能做到这一点。我会对其进行一些修改,只需查看描述(或任何其他合适的字段):

代码语言:javascript
复制
  it "returns a list of competitors for category" do
    competitors = Category.find_competitors_by_tags(@category.tags_array)
    descriptions = competitors.map(&:description).sort
    descriptions.should == [
      "Experiment Driven Development for Ruby",
      "Rack Based AB testing framework",
    ]
  end
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11232174

复制
相关文章

相似问题

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