2013-01-25 34 views
3

我使用这个非常漂亮的迷你ORM,Simple.Data,设置大量的测试数据,快速和容易。 我真的想扩展它的断言。例如我想断言的计数:扩展Simple.Data与断言

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

,这样我可以评价或多或少像你这样有FluentAssertions做。 它看起来是这样的:

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

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

有没有人有暗示这可以做到或者如果它甚至可能的原因内?

我目前穿越SRC在GitHub上试图找到一种方法,我可以在本地执行此操作并impromptu玩弄周围找路。

+0

我认为这个问题需要明确的是,就编译器而言,返回值来自GetCount()是动态的,所以扩展方法无法解析。 –

回答

2

可悲的是,没有幸福的答案。动态和扩展方法不混合,由乔恩·S和埃里克大号这里解释:Extension method and dynamic object

答案,在这个问题,要么调用shouldBe这样一个静态方法:

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

或该方法的返回值直列转换为已知类型:

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

或者,当你正在调查,用即兴应用与getCount将方法MYTABLE的接口。我猜你已经看到了我在Simple.Data和Impromptu上的博客文章,但是如果你还没有:http://blog.markrendle.net/2012/10/12/howto-dial-up-the-static-on-simple-data/

+0

谢谢你,是的,我已阅读你的博客即兴。内联投射似乎是要走的路。我想知道为什么内联转换不会跨越我的想法...谢谢你的方式:)一个伟大的产品。 –

0

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

public class MyClass : MyCustomExceptionClass 
{ 

} 

以这种方式,会更容易为你测试的方式方法你想