我使用的是ORM,获取记录对象的方法是使用FooModel::find(1)。FooModel有一个我需要模拟以进行测试的方法。我该怎么做呢?(不能使用PHPUnit mock,因为这样会得到一个与ID为1的记录不对应的模拟FooModel。)
编辑
示例:
class FooModel
{
// ORM model that fetches record from the DB
public function thisNeedsToBeMocked()
{
// some code here that depends on external fact
我们正在应用程序中实现“同步到日历”功能。我们的同步过程涉及从服务器端获取的事件,我们希望将这些事件复制到iPhone日历中。目前,我不确定我们为这个同步编写的方法是否解决了所有可能的情况--这就是我想要对它进行单元测试的原因。它包含对EKEventStore的多次调用,正如苹果文档所述,这些调用需要首先用requestAccessToEntityType:completion:调用:
在iOS 6及更高版本上,必须在使用requestAccessToEntityType:completion: for data to return初始化事件存储后请求对实体类型的访问。
在运行单元测试
我在单元测试中使用了犀牛模拟,并试图使用以下代码创建一个模拟:
var userDetails = MockRepository.GenerateMock<ReadOnlyCollection<UserDetails>>();
但是,当我运行单元测试时,我会得到以下错误:
Can not instantiate proxy of class:
System.Collections.ObjectModel.ReadOnlyCollection`
1[[SolutionName.FolderName,]].
Could not find a parameterless c
有一种情况是,我想检查参数X是否调用了一个模拟对象方法,但是只有在调用了模拟之后,测试才能访问X,所以我不能事先设置一个EXPECT_CALL。
例如。
// The class I'm testing.
class Maker
{
void register(Listener& lis);
Obj& make()
{
// make new Obj o
// call created(o) on registered Listener
// return o
}
}
class Li
我们正在尝试将单元测试添加到我们的业务层。技术堆栈是asp.net web forms、WCF、ADO.Net调用存储过程)。业务层对数据类调用静态方法,因此很难在不做大量更改的情况下引入DI。
这可能不是一种传统的方法,但我正在考虑将DB保留在单元测试(依赖项)中,但将其用作测试Db……使用现有的冻结数据库或在表中具有模拟数据。我想知道使用像Mock一样使用存储过程的测试数据库的可行性。无需复制整个数据库,只需创建由存储过程命名的表名即可。存储过程将只调用一个表,并返回静态数据...本质上,试图从DB的角度用类似Moq的东西来模拟模拟数据的功能。
有没有人可以推荐一些在测试中包含DB的设计,
我有一个类,它将消息写入一些日志。这个类是一个实用工具,它不做任何其他事情,它在后台运行,检查一些东西并记录它们。我想知道是否有可能在单元测试中验证日志是否已经写入,而不关心它实际写的是什么。我的班级正在接受测试:
//imports...
public class MyClass {
private static Log log = LogFactory.getLog(MyClass.class);
public MyClass() {
log.info("MyClass is being created.");
}
public void do