Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration tests #56

Open
PabloKowalczyk opened this issue Oct 25, 2018 · 6 comments
Open

Integration tests #56

PabloKowalczyk opened this issue Oct 25, 2018 · 6 comments

Comments

@PabloKowalczyk
Copy link

Hello, how to write integration tests for components? Some examples in the documentation would be very helpful.
Thanks :)

@antonmedv
Copy link
Owner

You can use something like jsdom

@PabloKowalczyk
Copy link
Author

I'm trying to configure Mocha with Webpack, but something is failing when i do import Btn from 'App/components/btn';. IDK this is the Monkberry or Mocha error. Call stack:

 RUNTIME EXCEPTION  Exception occurred while loading your tests

TypeError: Object prototype may only be an Object or null: undefined
    at Function.create (<anonymous>)
    at Object../assets/cs-app/js/templates/btn.monk (/vagrant/.tmp/mocha-webpack/1540640188825/bundle.js:164:24)
    at __webpack_require__ (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/webpack/bootstrap 15cae6e813f8c27b9512:19:1)
    at Object../assets/cs-app/js/components/btn.js (/vagrant/.tmp/mocha-webpack/1540640188825/bundle.js:78:89)
    at __webpack_require__ (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/webpack/bootstrap 15cae6e813f8c27b9512:19:1)
    at Object.require (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/assets/cs-app/test/some.js:5:1)
    at __webpack_require__ (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/webpack/bootstrap 15cae6e813f8c27b9512:19:1)
    at run (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/node_modules/mocha-webpack/lib/entry.js:3:20)
    at Array.forEach (<anonymous>)
    at Object../node_modules/mocha-webpack/lib/entry.js (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/node_modules/mocha-webpack/lib/entry.js:10:1)
    at __webpack_require__ (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/webpack/bootstrap 15cae6e813f8c27b9512:19:1)
    at ./assets/cs-app/js/components/btn.js.Object.defineProperty.value (/vagrant/.tmp/mocha-webpack/1540640188825/webpack:/webpack/bootstrap 15cae6e813f8c27b9512:62:1)
    at Object.<anonymous> (/vagrant/.tmp/mocha-webpack/1540640188825/bundle.js:66:10)
    at Module._compile (module.js:653:30)
    at Object._module2.default._extensions.(anonymous function) [as .js] (/vagrant/node_modules/mocha-webpack/lib/util/registerRequireHook.js:147:12)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at /vagrant/node_modules/mocha/lib/mocha.js:250:27
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (/vagrant/node_modules/mocha/lib/mocha.js:247:14)
    at Mocha.run (/vagrant/node_modules/mocha/lib/mocha.js:576:10)
    at /vagrant/node_modules/mocha-webpack/lib/runner/TestRunner.js:196:25
    at Compiler.<anonymous> (/vagrant/node_modules/mocha-webpack/lib/webpack/compiler/registerReadyCallback.js:26:7)
    at Compiler.applyPlugins (/vagrant/node_modules/tapable/lib/Tapable.js:61:14)
    at emitRecords.err (/vagrant/node_modules/webpack/lib/Compiler.js:264:11)
    at Compiler.emitRecords (/vagrant/node_modules/webpack/lib/Compiler.js:371:38)
    at emitAssets.err (/vagrant/node_modules/webpack/lib/Compiler.js:258:10)
    at applyPluginsAsyncSeries1.err (/vagrant/node_modules/webpack/lib/Compiler.js:364:12)
    at next (/vagrant/node_modules/tapable/lib/Tapable.js:218:11)
    at Compiler.compiler.plugin (/vagrant/node_modules/webpack/lib/performance/SizeLimitsPlugin.js:99:4)
    at Compiler.applyPluginsAsyncSeries1 (/vagrant/node_modules/tapable/lib/Tapable.js:222:13)
    at Compiler.afterEmit (/vagrant/node_modules/webpack/lib/Compiler.js:361:9)
    at require.forEach.err (/vagrant/node_modules/webpack/lib/Compiler.js:350:15)
    at /vagrant/node_modules/async/dist/async.js:473:16
    at iteratorCallback (/vagrant/node_modules/async/dist/async.js:1064:13)
    at /vagrant/node_modules/async/dist/async.js:969:16
    at MemoryFileSystem.writeFile (/vagrant/node_modules/memory-fs/lib/MemoryFileSystem.js:328:9)
    at writeOut (/vagrant/node_modules/webpack/lib/Compiler.js:339:28)
    at require.forEach (/vagrant/node_modules/webpack/lib/Compiler.js:345:12)
    at /vagrant/node_modules/async/dist/async.js:3110:16
    at eachOfArrayLike (/vagrant/node_modules/async/dist/async.js:1069:9)
    at eachOf (/vagrant/node_modules/async/dist/async.js:1117:5)
    at Object.eachLimit (/vagrant/node_modules/async/dist/async.js:3172:5)
    at emitFiles (/vagrant/node_modules/webpack/lib/Compiler.js:315:21)
    at Immediate.<anonymous> (/vagrant/node_modules/memory-fs/lib/MemoryFileSystem.js:288:4)
    at runCallback (timers.js:810:20)
    at tryOnImmediate (timers.js:768:5)
    at processImmediate [as _immediateCallback] (timers.js:745:5)

@antonmedv
Copy link
Owner

Check if your loaders is on.

@PabloKowalczyk
Copy link
Author

PabloKowalczyk commented Oct 30, 2018

Seems they are, SCSS loader works as expected. Requiring plain JS also works, but if any file import *.monk template then it starts to fail.
My module config:

[ { test: /\.jsx?$/,
       exclude: /(node_modules|bower_components)/,
       use: [Array] },
     { test: /\.css$/, use: [Array] },
     { test: /\.(png|jpg|jpeg|gif|ico|svg|webp)$/,
       loader: 'file-loader',
       options: [Object] },
     { test: /\.(woff|woff2|ttf|eot|otf)$/,
       loader: 'file-loader',
       options: [Object] },
     { test: /\.s[ac]ss$/, use: [Array] },
     { test: /bootstrap\.native/,
       loader: 'bootstrap.native-loader',
       options: [Object] },
     { test: /\.monk$/, loader: 'monkberry-loader' } ] }

EDIT
After some investigation i found out where the problem is. In generated output file for test there is a line btn.prototype = Object.create(Monkberry.prototype);, for some reason Monkberry.prototype is undefined. As a side note, Webpack's target is node, not web.
I was trying to debug it with console.log(Monkberry); but the output { Compiler: [Function: Compiler] } tells me nothing. Hope this will help you to find problem.

@PabloKowalczyk
Copy link
Author

Hey, any progress with this issue? Maybe repo with bug will be helpful?

@antonmedv
Copy link
Owner

Sorry, haven’t time for this repo now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants