我有一个必须始终混入一个子类的特征\PHPUnit_Framework_TestCase
.PhpStorm不知道这一点.我能做些什么来让PhpStorm自动完成并" assertNull
特征化" 这些特质内容?
<?php
trait MyTestUtils
{
public function foo()
{
$this->assertNu // autocomplete?
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能想出的最好的方法是在每种方法中加入以下内容:
/** @var \PHPUnit_Framework_TestCase|MyTestUtils $this */
Run Code Online (Sandbox Code Playgroud)
但这是重复的,并不了解受保护的成员.有更好的选择吗?
除了一些随机值之外,我想让我的所有属性始终至少使用一组固定的特殊值进行测试.我想在我的生成器规范中定义它,而不是在使用该生成器类型的每个测试中定义.例如,如果我生成Ints,我希望我的生成器始终为每个测试用例生成至少0,1和-1.这可能吗?
我想出了迄今为止最好的是做一个大小发电机,其中最小的ñ大小对应于我ñ特殊情况.这是有问题的,至少因为当最大测试次数配置为低于max size参数时,不测试所有可能的大小.
我的控制器访问tempfile
上传文件的属性并将其传递给另一个模拟组件.我的测试代码有
@file = mock(Object)
@file.stub_chain(:tempfile, :path).and_return('thefile.zip')
# ...
post :create, :file => @file
Run Code Online (Sandbox Code Playgroud)
和控制器代码调用params[:file].tempfile.path
.
从Rails 3.0升级到3.1后,上面的行开始失败了
undefined method `tempfile' for "#[RSpec::Mocks::Mock:0x2b0d9a0 @name=Object]":String
Run Code Online (Sandbox Code Playgroud)
也就是说,Rails 3.1 params[:file]
自动转换为字符串.
通过浏览器手动测试时,代码可以正常工作.我试图使用fixture_file_upload
,参数成为一个File
对象,但它没有tempfile
方法.
那么如何将任意模拟对象作为参数传递给Rails 3.1中的动作?