Namespace has changed from NTestDataBuilder to TestStack.Dossier.
The project has been renamed.
Do a global find and replace of using NTestDataBuilder
with using TestStack.Dossier
.
When you don't Set
a default value for a property that you later Get
in your builder it will now generate an anonymous value for that property rather than throwing an exception.
This is part of the work to make anonymous values a first class citizen of the library and to make it easier and quicker to tersely set up builders. This avoids the need to have boilerplate Set
calls in your builder constructor and also means that when you generate a list of objects each object will have a different value (by default).
The old behaviour of throwing an exception if a value hasn't been specified is no longer supported - use NTestDataBuilder version 1 if you want that or raise an issue on GitHub to explain your use case.
If you want to fix a static value for a property then by all means you can still use Set
calls in your builder constructor. If you aren't happy with the default anonymous value that is generated for a property you can use the Any
property to generate a value from a different equivalence class in combination with a Set
call in your builder constructor.
The way that lists are generated no longer uses NBuilder - the new syntax is backwards compatible with NBuilder except that the namespace you need to include is different. You can also refactor your list generation to be a lot more terse, but that is optional. Any BuildList
extension methods you created will now need to be deleted since they are no longer needed. You also need to ensure that all of the methods you call are marked virtual so the list generation can proxy those method calls.
In order to support a new, much terser syntax for generating lists we rewrote the list generation code ourselves. You can now do this:
var customers = CustomerBuilder.CreateListOfSize(3)
.TheFirst(1).WithFirstName("Robert")
.TheLast(1).WithEmail("[email protected]")
.BuildList();
That's instead of this syntax (which still works as well):
var customers = CustomerBuilder.CreateListOfSize(3)
.TheFirst(1).With(b => b.WithFirstName("Robert"))
.TheLast(1).With(b => b.WithEmail("[email protected]"))
.BuildList();
You also no longer need a custom extension method for the BuildList
method so you will need to delete any of these that you have created. If you don't use NBuilder's features outside of the list generation you may uninstall the NBuilder package.
Simply add the following to the files that generate lists of builders and change your builder modification methods to be virtual and the existing syntax should work:
using TestStack.Dossier.Lists;
Assuming you aren't using NBuilder for anything other than generating lists of entities with NTestDataBuilder 1.0 you should be able to do a global find and replace against using FizzWare.NBuilder;
.
If you uninstall the NBuilder package then you will need to remove the using statements for that library too.
Also, remove any BuildList
extension methods you created.