我有一个关于Hackage的软件包,它已经生成了文件,但它没有出现在Hackage页面上.我能够成功上传所有内容,但文档没有显示出来.
我在Leksah IDE中使用cabal haddock或生成文档Package > Build Documentation.
当我去Package > Open DocLeksah时,它找不到它,因为它正在寻找,dist/doc/html/hspec/hspec/index.html但生成的文件是dist/doc/html/hspec/index.html.我认为Hackage也在寻找同一个地方.
我猜我的源文件不在预期的位置,但我不知道它们应该如何.
源和目录结构可以在https://github.com/trystan/hspec找到.
在我看到的所有CQRS示例中,域事件触发了对读取模型的更新,但没有其他任何内容.但是,当您希望域事件在域中引起其他更改时呢?
例如,假设您有以下要求:
处理这个问题的最佳方法是什么?
在Haskell中使用applicative functor的时候,我经常会遇到这样的情况,我最终会得到这样的重复代码:
instance Arbitrary MyType where
arbitrary = MyType <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我想说:
instance Arbitrary MyType where
arbitrary = applyMany MyType 4 arbitrary
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何制作applyMany(或类似的东西).我甚至无法弄清楚类型是什么,但它需要一个数据构造函数,一个Int (n)和一个函数来应用n次.在为QuickCheck,SmallCheck,Data.Binary,Xml序列化和其他递归情况创建实例时会发生这种情况.
那我怎么定义applyMany?
我尝试过单元测试,我不是一个大粉丝; 它更多的是负担而不是恩惠.那么我应该对这个简单的2D点类进行哪些测试呢?
public class Point{
int x;
int y;
public Point(int px, int py) {
x = px;
y = py;
}
public double distanceTo(Point other) {
// Pythagorean theorem
}
public ArrayList<Point> lineTo(Point other) {
// Bresenham's line algorithm. The same thing I've
// implemented a dozen times in differnt languages
// and can type from memory....
}
}
Run Code Online (Sandbox Code Playgroud)
每种方法需要多少次测试?另一点可以与第一个或同一个四个象限中的一个位于同一位置,或者为空.那么每种方法有六个单元测试吗?
有可能让代码如此简单明了,以至于单元测试提供的价值很小,以至于它们不值得吗?
(到目前为止的响应是:应该为任何可以为null的参数,可以作为对象本身的任何参数(即this.distanceTo(this)),任何可能导致溢出的参数以及任何可能导致溢出的参数编写测试可能会导致浮点精度损失.至少有四件事要写测试.)