3

我正在使用这个非常好的迷你 ORM Simple.Data来设置大量测试数据,快速而简单。我真的很想将它扩展到断言。例如我想断言计数:

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

这样我就可以或多或少地像您对 FluentAssertions 所做的那样进行评估。它可能看起来像这样:

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

但是我发现在不失去动态优势的情况下很难做到这一点。

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

我目前正在 GitHub 上遍历 src,试图找到一种我可以在本地执行此操作的方法,并临时玩弄以找到一种方法。

4

2 回答 2

2

可悲的是,对此没有满意的答案。正如 Jon S 和 Eric L 所解释的,动态方法和扩展方法不能混合使用:扩展方法和动态对象

与该问题一样,答案是调用 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 -关于简单数据/

于 2013-01-25T13:00:38.907 回答
0

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

public class MyClass : MyCustomExceptionClass
{

}

这样,您可以更轻松地以您想要的方式测试方法

于 2013-01-25T12:46:36.660 回答