我有一个方法需要测试,该方法会使用特定的对象进行调用。但是,识别这个对象有些复杂,因为我对对象的特定实例并不感兴趣,而是要符合某些条件的实例。
例如,我的代码可能像这样:
但是我确切地知道,当比较“some_complex_object”和“test_complex_object”时,“ComplexObject#==”将返回false,因为这是期望的行为(在其他地方我依赖于标准的“==”行为,因此不想为“ComplexObject”重载它)。
我认为自己需要编写这样的测试是一个问题,我更喜欢重新构建代码,以便我不需要编写这样的测试,但不幸的是这是一个更大的任务,需要重写很多现有的代码,因此是我想实现但目前无法在时间限制内完成的长期解决方案。
Rspec是否有一种方法可以在测试中对参数进行更复杂的比较?理想情况下,我希望能够使用块,这样我就可以编写任意比较代码。
例如,我的代码可能像这样:
some_complex_object = ComplexObject.generate(params)
my_function(some_complex_object)
在我的测试中,我想要检查以下内容:
test_complex_object = ComplexObject.generate(test_params)
subject.should_receive(:my_function).with(test_complex_object)
但是我确切地知道,当比较“some_complex_object”和“test_complex_object”时,“ComplexObject#==”将返回false,因为这是期望的行为(在其他地方我依赖于标准的“==”行为,因此不想为“ComplexObject”重载它)。
我认为自己需要编写这样的测试是一个问题,我更喜欢重新构建代码,以便我不需要编写这样的测试,但不幸的是这是一个更大的任务,需要重写很多现有的代码,因此是我想实现但目前无法在时间限制内完成的长期解决方案。
Rspec是否有一种方法可以在测试中对参数进行更复杂的比较?理想情况下,我希望能够使用块,这样我就可以编写任意比较代码。