{"generator":"Jekyll","link":[{"@attributes":{"href":"https:\/\/fixrb.dev\/feed.xml","rel":"self","type":"application\/atom+xml"}},{"@attributes":{"href":"https:\/\/fixrb.dev\/","rel":"alternate","type":"text\/html"}}],"updated":"2025-01-03T21:57:04+00:00","id":"https:\/\/fixrb.dev\/feed.xml","title":"Fix specing framework","subtitle":"Fix is a modern Ruby testing framework built around a key architectural principle: the complete separation between specifications and tests. It allows you to write pure specification documents that define expected behaviors, and then independently challenge any implementation against these specifications.\n","author":{"name":"Cyril Kato"},"entry":[{"title":"The Three Levels of Requirements Inspired by RFC 2119","link":{"@attributes":{"href":"https:\/\/fixrb.dev\/framework\/testing\/2024\/12\/30\/the-three-levels-of-requirements-inspired-by-rfc-2119.html","rel":"alternate","type":"text\/html","title":"The Three Levels of Requirements Inspired by RFC 2119"}},"published":"2024-12-30T00:00:00+00:00","updated":"2024-12-30T00:00:00+00:00","id":"https:\/\/fixrb.dev\/framework\/testing\/2024\/12\/30\/the-three-levels-of-requirements-inspired-by-rfc-2119","content":{"@attributes":{"type":"html"}},"author":{"name":"Cyril Kato"},"category":[{"@attributes":{"term":"framework"}},{"@attributes":{"term":"testing"}},{"@attributes":{"term":"fix"}},{"@attributes":{"term":"rspec"}},{"@attributes":{"term":"spectus"}},{"@attributes":{"term":"testing"}},{"@attributes":{"term":"must"}},{"@attributes":{"term":"should"}},{"@attributes":{"term":"may"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Rethinking Test Architecture with Clear Specification Separation","link":{"@attributes":{"href":"https:\/\/fixrb.dev\/framework\/testing\/2024\/12\/29\/rethinking-test-architecture-with-fix.html","rel":"alternate","type":"text\/html","title":"Rethinking Test Architecture with Clear Specification Separation"}},"published":"2024-12-29T00:00:00+00:00","updated":"2024-12-29T00:00:00+00:00","id":"https:\/\/fixrb.dev\/framework\/testing\/2024\/12\/29\/rethinking-test-architecture-with-fix","content":{"@attributes":{"type":"html"}},"author":{"name":"Cyril Kato"},"category":[{"@attributes":{"term":"framework"}},{"@attributes":{"term":"testing"}},{"@attributes":{"term":"fix"}},{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"specifications"}},{"@attributes":{"term":"architecture"}},{"@attributes":{"term":"testing framework"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"The Fundamental Distinction Between Expected and Actual Values in Testing","link":{"@attributes":{"href":"https:\/\/fixrb.dev\/design\/testing\/2024\/11\/04\/fundamental-distinction-between-expected-and-actual-values-in-testing.html","rel":"alternate","type":"text\/html","title":"The Fundamental Distinction Between Expected and Actual Values in Testing"}},"published":"2024-11-04T11:00:00+00:00","updated":"2024-11-04T11:00:00+00:00","id":"https:\/\/fixrb.dev\/design\/testing\/2024\/11\/04\/fundamental-distinction-between-expected-and-actual-values-in-testing","content":{"@attributes":{"type":"html"}},"author":{"name":"Cyril Kato"},"category":[{"@attributes":{"term":"design"}},{"@attributes":{"term":"testing"}},{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"testing"}},{"@attributes":{"term":"matchi"}},{"@attributes":{"term":"design principles"}},{"@attributes":{"term":"best practices"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"From RSpec to Fix: A Journey Towards Simpler Testing","link":{"@attributes":{"href":"https:\/\/fixrb.dev\/framework\/comparison\/2015\/09\/06\/from-rspec-to-fix.html","rel":"alternate","type":"text\/html","title":"From RSpec to Fix: A Journey Towards Simpler Testing"}},"published":"2015-09-06T11:00:00+00:00","updated":"2015-09-06T11:00:00+00:00","id":"https:\/\/fixrb.dev\/framework\/comparison\/2015\/09\/06\/from-rspec-to-fix","content":{"@attributes":{"type":"html"}},"author":{"name":"Cyril Kato"},"category":[{"@attributes":{"term":"framework"}},{"@attributes":{"term":"comparison"}},{"@attributes":{"term":"fix"}},{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"rspec"}},{"@attributes":{"term":"testing"}},{"@attributes":{"term":"simplicity"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"A Fresh Take on Ruby Testing","link":{"@attributes":{"href":"https:\/\/fixrb.dev\/framework\/release\/2015\/09\/03\/a-fresh-take-on-ruby-testing.html","rel":"alternate","type":"text\/html","title":"A Fresh Take on Ruby Testing"}},"published":"2015-09-03T11:00:00+00:00","updated":"2015-09-03T11:00:00+00:00","id":"https:\/\/fixrb.dev\/framework\/release\/2015\/09\/03\/a-fresh-take-on-ruby-testing","content":{"@attributes":{"type":"html"}},"author":{"name":"Cyril Kato"},"category":[{"@attributes":{"term":"framework"}},{"@attributes":{"term":"release"}},{"@attributes":{"term":"fix"}},{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"testing"}},{"@attributes":{"term":"rspec"}},{"@attributes":{"term":"release"}}],"summary":{"@attributes":{"type":"html"}}}]}