使用断言扩展Simple.Data

时间:2013-01-25 12:28:39

标签: c# assertions simple.data fluent-assertions

我正在使用这个非常漂亮的迷你ORM, Simple.Data 来设置大量测试数据,快速简便。 我真的想把它扩展为断言。例如,我想在计数时断言:

Db.MyTable.GetCount(); <- Returns a dynamic

这样我可以或多或少地评估你对FluentAssertions的评价。 它看起来像这样:

Db.MyTable.GetCount().ShouldBe(X);

但我发现很难做到这一点而不会失去动力的优势

有没有人知道如何做到这一点,或者是否可能在合理范围内?

我目前正在GitHub遍历src试图找到一种方法,我可以在本地进行此操作并使用 impromptu 来寻找方法。

2 个答案:

答案 0 :(得分:2)

可悲的是,对此没有满意的答案。动态和扩展方法不会混合,正如Jon S和Eric L在此解释的那样:Extension method and dynamic object

答案就像在那个问题中一样,要么将ShouldBe作为静态方法调用:

AssertionExtensions.ShouldBe(Db.MyTable.GetCount(), 3);

或将方法的返回值内联到已知类型:

((int)Db.MyTable.GetCount()).ShouldBe(3);

或者,正如您正在调查的那样,使用Impromptu通过GetCount方法将接口应用于MyTable。我猜你在Simple.Data和Impromptu上看过我的博文,但如果你还没有:http://blog.markrendle.net/2012/10/12/howto-dial-up-the-static-on-simple-data/

答案 1 :(得分:0)

在你正在创建的类中,为什么不创建自己的自定义断言类,并使你创建的对象类继承它们。

public class MyClass : MyCustomExceptionClass
{

}

通过这种方式,您可以更轻松地按照自己想要的方式测试方法