首页 \ 问答 \ Rspec:“array.should == another_array”,但不用担心订单(Rspec: “array.should == another_array” but without concern for order)

Rspec:“array.should == another_array”,但不用担心订单(Rspec: “array.should == another_array” but without concern for order)

我经常想要比较数组,并确保它们以任何顺序包含相同的元素。 在RSpec中有简单的方法吗?

以下是不可接受的方法:

#to_set

例如:

array.to_set.should == another_array.to_set

当数组包含重复的项目时,会失败。

#sort

例如:

array.sort.should == another_array.sort

当数组元素不实现#<=>时,会失败


I often want to compare arrays and make sure that they contain the same elements, in any order. Is there a concise way to do this in RSpec?

Here are methods that aren't acceptable:

#to_set

For example:

expect(array.to_set).to eq another_array.to_set

or

array.to_set.should == another_array.to_set

This fails when the arrays contain duplicate items.

#sort

For example:

expect(array.sort).to eq another_array.sort

or

array.sort.should == another_array.sort

This fails when the arrays elements don't implement #<=>


原文:https://stackoverflow.com/questions/2978922
更新时间:2019-07-12 10:31

最满意答案

尝试array.should =~ another_array

我可以找到的最好的文档是代码本身, 在这里


Use match_array, which takes another array as an argument, or contain_exactly, which takes each element as a separate argument, and is sometimes useful for readability. (docs)

Examples:

expect([1, 2, 3]).to match_array [3, 2, 1]

or

expect([1, 2, 3]).to contain_exactly 3, 2, 1
2018-11-26

相关问答

更多

允许匿名用户仅访问ASP.NET中的“登录和注册”页面(Allow anonymus users to access only Login and Register page in ASP.NET)

你可以尝试2种方式首先是 - 第一次使菜单可见假。 。用户登录后,将此用户添加到会话中。 。如果session不为null,则添加条件,然后使菜单显示为True 第二种方式是在用户登录后,您可以从数据库创建动态菜单。 您也可以尝试使用Web.config参考以下链接: http://weblogs.asp.net/gurusarkar/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config You can

JS的简单继承实现:这是一个很好的例子吗?(Simple inheritance implementation for JS: is this a good example?)

我会看一下npm install declarejs ,它基本上是Dojo声明的翻录版本。 你可以在这里找到更多信息 我个人更喜欢像Backbone的.extend()这样的东西,很容易被撕掉。 Well, the answer I suppose is "if it works, then great!". It works... so: great! For future reference, "declare" is on GitHub: https://github.com/mercmo

选择具有多个参数的行(ajax和PHP)(Selecting row with multiple parameters (ajax and PHP))

首先, 您应该使用预准备语句 ,因为目前代码容易受到SQL注入攻击。 我无法强调这一点,攻击者可以使用您当前拥有的代码对您的数据库造成严重破坏。 您应该使用以下内容(从上面链接的页面中获取,并在同一页面上显示此注释 )。 请注意,我已经删除了对POSTed数据的intval调用,因为我认为它们是字符串而不是整数。 $to_encode = array(); $mysqli = new mysqli("localhost", "root", "password", "myDB"); /* che

从代码访问WSO2 BPS和ESB注册表(Accessing WSO2 BPS and ESB registry from code)

我想你指的是如何为WSO2产品安装功能, 请查找此文档 。 I think your referring to how to install features to WSO2 products, Please find this documentation.

方法setListAdapter(ListAdapter)未定义类型(the method setListAdapter(ListAdapter) is undefined for the type)

setListAdapter(adapter)在ListActivity中不在Asyank Task中 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.apache.http.NameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.J

Laravel 5.2 - 修改模型的构建器(Laravel 5.2 - modify a model's builder)

我相信你正在寻找查询范围。 您可以在模型上创建新的查询范围,然后可以像使用任何其他查询构建器方法一样使用它。 例如,要创建filter()范围: class MyModel extends Model { public function scopeFilter($query, $filters) { // modify $query with your filters return $query; } } 在定义了查询范围的情况下,您可以像调用

无法监听Window对象node-webkit(can not listen on Window object node-webkit)

这是因为我使用的是node-v0.10.33,它只与node-webkit v0.8兼容 It is because I am using node-v0.10.33,it is only compatible with node-webkit v0.8

从另一个类访问NSMutableArray [重复](Access NSMutableArray from another class [duplicate])

您应该使用retain而不是assign来增加cbxDataList的保留计数。 @property (retain) NSMutableArray *cbxDataList; 请注意,对象需要在某个时候释放,否则您可能会发生内存泄漏。 You should use retain instead of assign to increase the retain count of cbxDataList. @property (retain) NSMutableArray *cbxDat

相关文章

更多

最新问答

更多
  • 图像TapGestureRecognizer未触发(Image TapGestureRecognizer not firing)
  • 从数组中选择项目(Selecting items from an array)
  • PhpStorm:简单的PHP表单不发布(PhpStorm: Simple PHP form not posting)
  • 如果语句只有Javascript中的数字(If statement with only a number in Javascript)
  • 截图Android中的黑色(Screenshot Black in Android)
  • 默认值如何在数据库中内部工作?(How does default value internally work in Database?)
  • 左连接不加入单个记录(Left Join Not Joining with a Single Record)
  • 在#sign drupal之后获取url参数(get url parameter after # sign drupal)
  • Crontab CD到目录(Crontab CD to Directory)
  • #inf c ++ visual studio(#inf c++ visual studio)
  • 使用Python将指数修改的高斯曲线拟合到数据(Fitting an exponential modified gaussian curve to data with Python)
  • Javascript - 具有音高和持续时间控制的文本到语音(Javascript - text to speech with pitch and duration control)
  • 群组和用户有多少通过?(Groups and Users has many oder has many through?)
  • 如何在简单的二叉树中选择节点所在的哪一侧?(How to pick which side a node is on in a simple binary tree?)
  • 在ImageView上添加TextView(Android)(Add TextView over ImageView (Android))
  • 使用工厂方法创建泛型(Using Factory Method to Create Generics)
  • cordova 4.1.2中的平台特定代码(platform specific code in cordova 4.1.2)
  • 使用php格式化日期[复制](Format date using php [duplicate])
  • 在Python中解析年,月,日,小时,分钟,秒(Parsing year, month, day, hour, minute, second in Python)
  • 用jquery替换图像和类(Replacing image and class with jquery)
  • 导入的module.submodule命名空间干扰彼此(imported module.submodule namespaces interfering with eachother)
  • 播放框架:提交按钮似乎不起作用(Play framework: Submit button doesn't seem to work)
  • 段落包括通过过渡带来的div(Paragraph covers div brought through transition)
  • 使用processing.Manager时对象是否重复?(Object duplicated when using processing.Manager?)
  • lxde意外退出(lxde quits unexpectedly)
  • 真正的Maven依赖是什么?(What really are Maven dependencies?)
  • 如何在我的代码中修复getJSON方法错误?(how to fix getJSON method error in my code?)
  • Google Analytics状态:已安装跟踪 - 但无法正常运行(Google Analytics Status: Tracking Installed - but isnt working)
  • 在模型文件中的非对象上调用成员函数num_rows()(Call to a member function num_rows() on a non-object in model file)
  • 有关UNIX中fork()函数的问题(Questions about the fork() function in UNIX)