标签: isolation-frameworks

如何实施Moles隔离框架?

Moles是Microsoft创建的隔离框架.Moles的一个很酷的功能是它可以"模拟"静态/非虚拟方法和密封类(这对于像Moq这样的框架是不可能的).以下是Moles可以做的快速演示:

Assert.AreNotEqual(new DateTime(2012, 1, 1), DateTime.Now);

// MDateTime is part of Moles; the below will "override" DateTime.Now's behavior
MDateTime.NowGet = () => new DateTime(2012, 1, 1); 
Assert.AreEqual(new DateTime(2012, 1, 1), DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

看起来像Moles能够DateTime.Now在运行时修改CIL主体.由于Moles不是开源的,我很想知道Moles使用哪种机制来在运行时修改方法的CIL.谁能摆脱任何光明?

.net c# mocking isolation-frameworks moles

22
推荐指数
1
解决办法
3259
查看次数

我怎么能重构这个工厂类型的方法和数据库调用是可测试的?

我正在努力学习如何进行单元测试和模拟.我理解TDD和基本测试的一些原理.但是,我正在考虑重构下面的代码,这些代码是在没有测试的情况下编写的,并且我试图了解它是如何更改以使其可测试的.

public class AgentRepository
{

public Agent Select(int agentId)
{
    Agent tmp = null;
    using (IDataReader agentInformation = GetAgentFromDatabase(agentId))
    {
        if (agentInformation.Read())
        {
            tmp = new Agent();
            tmp.AgentId = int.Parse(agentInformation["AgentId"].ToString());
            tmp.FirstName = agentInformation["FirstName"].ToString();
            tmp.LastName = agentInformation["LastName"].ToString();
            tmp.Address1 = agentInformation["Address1"].ToString();
            tmp.Address2 = agentInformation["Address2"].ToString();
            tmp.City = agentInformation["City"].ToString();
            tmp.State = agentInformation["State"].ToString();
            tmp.PostalCode = agentInformation["PostalCode"].ToString();
            tmp.PhoneNumber = agentInformation["PhoneNumber"].ToString();
        }
    }

    return tmp;
}

private IDataReader GetAgentFromDatabase(int agentId)
{
    SqlCommand cmd = new SqlCommand("SelectAgentById");
    cmd.CommandType = CommandType.StoredProcedure;

    SqlDatabase sqlDb = new SqlDatabase("MyConnectionString");
    sqlDb.AddInParameter(cmd, "AgentId", DbType.Int32, …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing mocking isolation-frameworks

12
推荐指数
1
解决办法
578
查看次数

简化的Ruby代码部署

这是我想象的开发和部署过程:

  1. 创建项目目录my_project.
  2. 将所需的Ruby版本安装到其中.
  3. 安装所需的宝石.
  4. 写一些代码.
  5. 使用fpm打包整个事情.
  6. 将debian软件包发送到生产箱并安装.

我使用RVM和Bundler来解决一些痛点,但RVM并不关心创建可重定位的Ruby安装,因此您无法~/.rvm/rubies进入项目目录并期望一切都能解决.您必须重写各种硬编码#!行,在某些情况下,您必须将.so文件移动到lib目录中.我通过搜索互联网一起破解了一组脚本,这些互联网一起完成了我想要的东西,但整个事情感觉就像一个巨大的黑客.

我不小心偶然发现了https://github.com/ot/bpt,它可以用于构建可以完全重定位的Ruby安装的东西但是这个项目在两年多的时间里没有被触及所以我有点犹豫在它上面构建一些东西.

我没有看到这个问题更优雅的解决方案吗?人们如何隔离和部署Ruby项目?我觉得这应该是一个解决的问题.

ruby deployment isolation-frameworks

7
推荐指数
1
解决办法
285
查看次数

哪个是Java的最佳隔离框架?JMock,Easymock,Mockito还是其他?

我意识到这已经被问过,但最后一次是在2008年中期.

如果你现在正在开始一个新项目,你会使用哪一个?为什么?他们在可读性,可用性,可维护性和整体稳健性方面的优势/劣势是什么?

java unit-testing mocking stub isolation-frameworks

7
推荐指数
1
解决办法
1885
查看次数

.net的首选单元测试隔离框架

我已经使用过RhinoMocks产品很长一段时间了,对产品非常满意 - 从来没有理由去其他地方看看.我最近被TypeMock的优秀人员要求给他们的产品一个旋转,并想知道其他开发人员对Typemock Isolator的看法.你会建议其他隔离/模拟框架吗?为什么?

.net unit-testing mocking isolation-frameworks

6
推荐指数
1
解决办法
1373
查看次数

用于测试Mono的隔离框架

阅读了关于Moles的好东西后,我想在我们用于编写单元测试的工具集中添加一个隔离框架.

我们的应用程序在Mono下运行,因为它部署在Linux和Windows上,我似乎找不到支持Mono的框架.

我已经看过一些关于使用塞西尔操纵装配的文章,但我很难找到任何我们可以实际使用的东西.

c# mono unit-testing isolation-frameworks moles

5
推荐指数
1
解决办法
602
查看次数

标签 统计

isolation-frameworks ×6

mocking ×4

unit-testing ×4

c# ×3

.net ×2

moles ×2

deployment ×1

java ×1

mono ×1

ruby ×1

stub ×1