我最近听说了基于模型的测试,并搜索了可以遵循这种方法的工具。
结果我找到了 FsCheck。
在实验页面,作者描述了如何创建一个可以执行的基于模型的测试。
这一切都很好,但遗憾的是我不明白实际对象和对象模型之间有什么区别。
因此,给定以下代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace SimpleOrderApp
{
public class Order
{
private string _name;
private string _description;
private bool _isOnOrderList;
public Order(string name, string description)
{
_name = name;
_description = description;
_isOnOrderList = false;
}
public string Name {
get => _name;
set
{
if (!_isOnOrderList)
{
return;
}
_name = value;
}
}
public string Description
{
get => _description;
set
{
if (!_isOnOrderList)
{
return;
}
_description = value;
}
}
public bool IsOnOrderList
{
get => _isOnOrderList;
set => _isOnOrderList = value;
}
}
}
规范: - 用户能够提供订单名称 - 用户能够提供订单描述 - 如果订单在 OrderList 中,用户将无法更新订单 (IsOnOrderList = true)
错误:
代码
if (!_isOnOrderList)
{
return;
}
不应该有!
。
有人可以帮我构建一个OrderModel
,我可以用它来验证我的Order
对象并向我解释为什么必须这样做吗?目前,我非常热衷于认为Order
并且OrderModel
是相同的。
升级版:
声明模型具有与被测对象相同的属性,但这些值只是硬编码的,这是否正确?