GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account.
This may be linked tobut I'm not sure so reporting this separately:. Hi GabeMedrashthanks for the issue! I think you are right and this is linked to I'm now reading this code here and it seems like if we've got an object inside an Arraywe look for val inside every index of the Array using deep-eql from utils. I think that we should fix this by adding the possibility of using the deep flag for the includes assertion. However, doing this would be a breaking change, since the current default behavior is to use deep-eql.
This could break a lot of people. If we want this to be a more 'soft' change maybe we could have an strict flag instead of deep flag. GabeMedrash As a workaround I recommend using. I'd like to go back in time to read up on the PR that first introduced it unless it was an original assertion. Will return to this later.
Cool thanks so much, lucasfcosta and meeber. I can confirm that include. For what it's worth, lucasfcostayour proposed change shopify stripe do an initial check if deep is flagged before using deep-eql to make the comparison is what I would have expected as a user of the library.
Based on the above, I think the current functionality is a bug.The BDD styles are expect and should. Both use the same chainable language to construct assertions, but they differ in the way an assertion is initially constructed. Check out the Style Guide for a comparison. The following are provided as chainable getters to improve the readability of your assertions.
They do not provide testing capabilities unless they have been overwritten by a plugin. Sets the deep flag, later used by the equal and property assertions. Sets the any flag, opposite of the all flag later used in the keys assertion.
Sets the all flag opposite of the any flag later used by the keys assertion. The include and contain assertions can be used as either property based language chains or as methods to assert the inclusion of an object in an array or a substring in a string.
When used as language chains, they toggle the contains flag for the keys assertion. Asserts that the target is undefined. Asserts that the target is neither null nor undefined. For arrays and strings, it checks the length property. For objects, it gets the count of enumerable keys. Alternately, if the deep flag is set, asserts that the target is deeply equal to value. Asserts that the target is deeply equal to value.
Asserts that the target is greater than value. Can also be used in conjunction with length to assert a minimum length. The benefit being a more informative error message than if the length was supplied directly. Asserts that the target is greater than or equal to value. Asserts that the target is less than value. Can also be used in conjunction with length to assert a maximum length.
Asserts that the target is less than or equal to value. Can also be used in conjunction with length to assert a length range. Asserts that the target is an instance of constructor.
Asserts that the target has a property nameoptionally asserting that the value of that property is strictly equal to value. If the deep flag is set, you can use dot- and bracket-notation for deep references into objects and arrays. You can also use an array as the starting point of a deep. Furthermore, property changes the subject of the assertion to be the value of that property from the original object.
This permits for further chainable assertions on that property. Note that dots and bracket in name must be backslash-escaped when the deep flag is set, while they must NOT be escaped when the deep flag is not set. Asserts that the target has an own property name. Asserts that the target has an own property descriptor namethat optionally matches descriptor.
The dark mode beta is finally here.
Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. I am setting up my tests for the results to a REST endpoint that returns me an array of Mongo database objects. What I want my tests to verify is that in the return array it conatins the specific titles that should return.
Things like res. Is there a way to make it do what I want? As stated here following code works now with chai-like 0. I just love the natural readability of this approach. Here is another approach that I found to be more helpful. Basically, use string interpolation and map your array of objects to an array of string literals. Then you can write expectations against the array of strings.
An alternative solution could be extending the array object with a function to test if an object exists inside the array with the desired property matching the expected value, like this. Learn more. Chai - Testing for values in array of objects Ask Question.Chai Assertions and Accessibility Testing with Aparna Gopalakrishnan
Asked 3 years, 2 months ago. Active 4 months ago. Viewed 27k times. Jared Yach Jared Yach 1 1 gold badge 2 2 silver badges 9 9 bronze badges.
Postman Cheat Sheet
Active Oldest Votes. David Starkey 1, 3 3 gold badges 25 25 silver badges 43 43 bronze badges. Thank you. Kev 13k 12 12 gold badges 71 71 silver badges bronze badges.The assert style is very similar to node. Of the three style options, assert is the only one that is not chainable.
Check out the Style Guide for a comparison. Throw a failure. Asserts that object is truthy. Asserts that object is falsy. Asserts non-strict inequality!
Asserts strict inequality! Asserts that actual is deeply equal to expected. Assert that actual is not deeply equal to expected. Asserts that value is true. Asserts that value is not true. Asserts that value is false. Asserts that value is not false. Asserts that value is null. Asserts that value is not null.
Learn more. Asked 6 years, 9 months ago. Active 1 year, 5 months ago. Viewed 97k times. Why does the following fail? Active Oldest Votes.
FTR, the deep equal syntax has changed to:. You're right, I didn't read well. I thought it's just another API change. Try to use deep Equal.
It will compare nested arrays as well as nested Json. Meet Mehta Meet Mehta 3, 3 3 gold badges 16 16 silver badges 26 26 bronze badges. This also works for arrays: expect [1, 5, 10].
This is how to use chai to deeply test associative arrays. GreensterRox GreensterRox 3, 1 1 gold badge 17 17 silver badges 25 25 bronze badges. Sign up or log in Sign up using Google.
Sign up using Facebook.GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account. I know you can get this with contains. Hey Droogans thanks for the issue.
In this example, somePromise resolves to a string. That's why it's be. I think it reads nicer to expect 'a'. Granted, it's also nicer for libraries like chai-as-promisedwhich is the main reason I raised the issue. So I think what you're looking for, is to assert that one value is equal to one of a set of values - the equivalent of ['a', 'b', 'c']. Is this correct? I'm a little wary of using in as an assertion - mostly because it doesn't convey enough information about what the assertion does.
How do you feel about something like expect 'a'. I create lists of data to enumerate over in my tests, often. One of the first checks I make, however, is that something I'm interested in appears in that list, so I like to reuse that bit in both places. This may not be a perfect example Would you like to formulate a PR? I'd be happy to offer guidance where needed. Skip to content. Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Subscribe to RSS
New issue. Jump to bottom.Easy to use Pass your CLI and arguments as a single string, an array of strings, or as separate parameters. Each test ony needs to specify the arguments that are unique to it.
Everything else is the same. Windows Support Excellent Windows support, thanks to cross-spawn. You can pass your CLI and its arguments as a single string, an array of strings, or as separate parameters.
The following examples all do the same thing:. See ez-spawn options for details about the options parameter. Rather than repeating the same parameters every time you call chaiExecyou can just set chaiExec. Your default values will be used for every subsequent chaiExec call. Set this once, and then you only ever need to pass arguments to chaiExec. If you pass additional arguments when you call chaiExecthey will be appended to the default arguments. If you pass additional options when you call chaiExecthey will be merged with the default arguments.
You can test for a specific string, a substring, or a regular expression. Contributions, enhancements, and bug-fixes are welcome! File an issue on GitHub and submit a pull request. Install dependencies npm install. Run the tests npm test. Use it however you want. Chai Assertion Library. Guide API Plugins.