context = &fakes.Context{} routeManager = &fakes.RouteManager{} context.RouteManagerReturns(routeManager) addRoute = commands.AddRoute{ Interface: "my-interface", Destination: net.IPNet{ IP: net.ParseIP("192.168.1.1"), Mask: net.CIDRMask(24, 32), }, Gateway: net.ParseIP("192.168.1.4"), } }) It("uses the route addder to add the route", func() { err := addRoute.Execute(context) Expect(err).NotTo(HaveOccurred()) Expect(routeManager.AddRouteCallCount()).To(Equal(1)) ifName, dest, gw := routeManager.AddRouteArgsForCall(0) Expect(ifName).To(Equal("my-interface")) Expect(dest.String()).To(Equal("192.168.1.1/24")) Expect(gw.String()).To(Equal("192.168.1.4")) }) Context("when adding the route fails", func() { BeforeEach(func() { routeManager.AddRouteReturns(errors.New("no route for you")) }) It("wraps and propogates the error", func() {