Hi Myron, I will definitely check the book - looks like it's perfect for RSpec beginner. Also, thanks for sharing the example online - that's alone can give me a good starting base :)
I will ask another question while posting - for unit-testing I'm using Faker gem to fake common strings. However, in end to end tests, we work against a database - so even if I'm using the 'unique' method, I'm running out of unique strings after a while. I'm using 'securerandom' to generate random number, but wondering if there's a better approach for that. Thanks! On Wednesday, July 19, 2017 at 6:33:49 PM UTC+3, Myron Marston wrote: > > My upcoming book, Effective Testing with RSpec 3 > <https://www.google.com/url?q=https%3A%2F%2Fpragprog.com%2Fbook%2Frspec3%2Feffective-testing-with-rspec-3&sa=D&sntz=1&usg=AFQjCNHGLaAn9OUSvszwbNhLSkP9Ypy-7A>, > > has an example of building a JSON API using end-to-end acceptance tests, > isolated unit tests, and integration tests. It might fit what you're > looking for better since you mentioned you're looking for examples of > end-to-end testing of REST services. > > The code for the book is all online <https://github.com/rspec-3-book>, as > well. > > All that said, Xavier's screen cast is very good, and I definitely > recommend it, particularly if you do better with videos than printed > materials. > > Myron > > On Wed, Jul 19, 2017 at 4:30 AM, Jon Gordon <[email protected] > <javascript:>> wrote: > >> Thanks Xavier :) >> I will be checking this course! >> >> Is there perhaps an open-source project with end-to-end spec tests you >> can recommend (REST tests are preferred, not Capybara)? something to get a >> reference from? >> Thank you. >> >> On Wednesday, July 19, 2017 at 2:24:46 AM UTC+3, Xavier Shay wrote: >>> >>> Obligatory plug for >>> https://www.pluralsight.com/courses/rspec-ruby-application-testing which >>> touches on some of the themes you're asking about :) >>> >>> >>> On Tue, Jul 18, 2017, at 04:06 PM, Jon Rowe wrote: >>> >>> Hi Jon >>> >>> A couple of tips, firstly you can stub out your external dependencies >>> for an end to end test, it just depends on the level of integration you >>> want, it’s equally fine to do what you propose. For injecting your endpoint >>> (IP, hostname or otherwise) you have a couple of ways of doing it, the >>> simplest is to use environment variables e.g. `ENV[‘API_ENDPOINT’]`, or you >>> can build yourself a config system like you mention. The reason why you >>> don’t see big projects using external configuration files is it is usually >>> done at the app level rather than in rspec. >>> >>> If you chose to go down the config file route, xml, yml or otherwise, >>> you’d be better off loading it in a spec_helper or other such support file, >>> and assigning it somewhere. >>> >>> Personally I would go with json fixture files for static json, or a >>> generator method if it needs to be dynamic. >>> >>> Cheers. >>> Jon >>> >>> Jon Rowe >>> --------------------------- >>> [email protected] >>> jonrowe.co.uk >>> >>> On Wednesday, 19 July 2017 at 01:52, Jon Gordon wrote: >>> >>> >>> Hi everyone, >>> >>> I'm quite new to RSpec, and I have used it mainly for unit-testing. >>> Lately, a need for a small number of end-to-end tests became relevant. When >>> writing test-cases, I'm trying to stub all dependencies, but because that's >>> not an option when doing integration tests, I need some help to understand >>> what's the proper way to do things. Here's couple of questions: >>> >>> 1. The test requires an IP for remote machine (which is not local and >>> sadly can not be). Obviously, I shouldn't supply the IP inside the spec >>> file. The simple way is reading an external YML file with the IP (that will >>> get created automatically during the CI process with the right IP for >>> example) and populate the IP directly from it. But, I was checking couple >>> of big project that uses rspec, and I never seen an external configuration >>> file, so I'm thinking perhaps there is a better way of doing it >>> >>> 2. If indeed YML file is the right answer, I'm not sure if reading from >>> the YML file every spec file (that uses this service) is the right thing to >>> do? Shouldn't I be using hooks instead for that? >>> >>> 3. The test-object is a REST service, and some of the requests require >>> big json object. I have two options: >>> a. I can create the json object in the spec file itself (which makes >>> all information visible to you from the spec file itself, but clutters the >>> spec) >>> b. Creating an external default fixture (which is basically a json >>> file), read from it during the spec, and re-write the values that are >>> relevant for the specific tests. >>> >>> Thank you! >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "rspec" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/rspec/61ac9ade-1045-4211-80d3-441ef01ae7cb%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/rspec/61ac9ade-1045-4211-80d3-441ef01ae7cb%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "rspec" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/rspec/3FF6FCF2018A482CBDC70C02BAFFB643%40jonrowe.co.uk >>> >>> <https://groups.google.com/d/msgid/rspec/3FF6FCF2018A482CBDC70C02BAFFB643%40jonrowe.co.uk?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "rspec" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] <javascript:> >> . >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/rspec/28f3f239-1515-437b-b011-82b2dd163502%40googlegroups.com >> >> <https://groups.google.com/d/msgid/rspec/28f3f239-1515-437b-b011-82b2dd163502%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "rspec" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rspec/c297c4c9-5225-47d9-a6e2-80f461bd1226%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
