我遇到了将测试建模为从var bodyObj = $("body");
bodyObj.css('height', window.innerHeight + "px");
方法驱动到应用程序内部工作的问题。
.run
方法是尚未编写的应用程序的唯一入口点。你在下面看到它只是一个快速的模型,它可以的工作方式。
.run
基本上是一个创建.run
实例的工厂,添加了一些轮子和门和最后返回汽车的字符串表示。
因此,我不确定如何编写我的第一个测试来开始。
Car
我有些想法:
class Car
attr_accessor :wheels, :doors
def initialize
@wheels = []
@doors = []
end
def self.run(wheels, doors)
car = Car.new
car.wheels = Car::Wheel.load_json(wheels)
car.doors = Car::Door.load_json(doors)
car.build.to_s
end
end
Car.run(wheels_json, doors_json)
将会吐出一个字符串汽车的代表。我将不得不编写大量代码以使测试通过。.run
正在返回.run
的实例,我可以通过抓取返回的实例进行测试但是我不能这样做,因为该方法会返回一个字符串。要清楚,问题是:鉴于上述代码,您将如何开始测试以帮助您减少并构建应用程序的其余部分。
答案 0 :(得分:0)
单元测试的基本原则是每个单元(Car::Wheel
,Car::Door
)应单独测试。当你组成两个类时,你可以肯定,底层元素是正确实现的。
您应该拥有单一责任的方法(只是构建而不是构建和序列化),而不是run
方法:
def self.build(wheels, doors)
car = Car.new
car.wheels = Car::Wheel.load_json(wheels)
car.doors = Car::Door.load_json(doors)
car
end
def self.run(wheels, doors)
self.build.to_s
end
这样,您可以在返回对象时轻松测试build
方法的输出。